فیدو - FIDO2 استانداردی جهانی برای احراز هویت بدون رمز عبور است که توسط مایکروسافت و شرکتهای بزرگ دیگر طراحی شده است تا امنیت ورود به حسابها را بالا ببرد و جلوی حملات فیشینگ و هک رو بگیرد.
🔐 چگونه کار میکند؟
به جای رمز عبور، FIDO2 از یک جفت کلید رمزنگاری استفاده میکند:
- کلید عمومی برای سرور.
- کلید خصوصی که فقط روی دستگاه شما میماند.
وقتی میخواهید وارد حساب کاربری خود شوید، دستگاه شما رمزنگاری را با کلید خصوصی امضا میکنه و امنیت را تضمین میکند.
📱 انواع احراز هویتکنندهها:
۱. قابل حمل (Roaming): مانند فلش امنیتی، گوشی یا ساعت هوشمند.
۲. داخلی (Platform): مثل اثر انگشت یا تشخیص چهره روی لپتاپ یا موبایل.
✅ مزایای FIDO2:
- امنیت بالا در برابر فیشینگ و بدافزار.
- حفظ حریم خصوصی (اطلاعات بیومتریک فقط روی دستگاه ذخیره میشود).
- راحتی در ورود بدون نیاز به رمز.
- مقیاسپذیری برای شرکتها و سازمانها.
💻 نمونه کد ساده برای استفاده از FIDO2 در سیشارپ:
بخش ابتدایی جهت ایجاد کلیدها:
// 1. پیکربندی اولیه FIDO2
var fidoConfig = new Fido2Configuration
{
ServerDomain = "myapp.com",
ServerName = "My Secure App",
Origin = "https://myapp.com"
};
var fido2 = new Fido2(fidoConfig);
// 2. تعریف کاربر
var user = new Fido2User
{
DisplayName = "Hamed",
Name = "hamed123",
Id = Encoding.UTF8.GetBytes("unique-user-id")
};
// 3. ایجاد گزینههای ثبتنام
var options = fido2.RequestNewCredential(
user,
new List<PublicKeyCredentialDescriptor>(), // لیست دستگاههای قبلی
AuthenticatorSelection.Default,
AttestationConveyancePreference.None
);
// 4. ارسال گزینهها به کلاینت برای ادامه ثبتنام
return Json(options);
بخش دوم برای احراز هویت کلیدهای از قبل ایجاد شده:
var success = await fido2.MakeAssertionAsync(
clientResponse, // پاسخ امضا شده از کلاینت
assertionOptions,
storedPublicKey, // کلید عمومی ثبتشده قبلی
storedUserHandle
);
if (success.Result.Status == "ok")
{
// ورود موفق
return Ok("ورود با موفقیت انجام شد!");
}
else
{
return BadRequest("احراز هویت ناموفق بود.");
}
🔗 داکیومنت ها ( ۱ و ۲ )
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#حامد_حاجیلو (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______