Uwierzytelnianie wieloskładnikowe w ASP.NET Core

Ukończone

W poprzedniej lekcji dostosowano i rozszerzono ASP.NET Core Identity. W tej lekcji dowiesz się więcej na temat uwierzytelniania wieloskładnikowego i sposobu implementacji w usłudze Identity.

Uwierzytelnianie wieloskładnikowe

Uwierzytelnianie wieloskładnikowe (MFA) to proces, w którym użytkownik jest monitowany o dodatkowe formy identyfikacji podczas logowania. Ten monit może dotyczyć kodu z aplikacji, wartości tokenu sprzętowego lub skanowania biometrycznego. Jeśli potrzebujesz drugiego typu uwierzytelniania, zabezpieczenia są rozszerzone.

Dowód wymagany do uwierzytelniania jest podzielony na trzy typy:

  • Coś, co wiesz, jak hasło lub pytanie zabezpieczające.
  • Coś, co masz, na przykład token sprzętowy lub aplikację na telefonie.
  • Coś, co jesteś, jak odcisk palca lub skanowanie twarzy.

Znaczna część skuteczności uwierzytelniania wieloskładnikowego wynika z używania różnych typów uwierzytelniania. Przeciwnik może być w stanie uzyskać dostęp do wielu rzeczy, które znasz, takich jak hasło i pseudonim dzieciństwa. Jednak trudniej jest naruszyć zarówno coś, co wiesz, jak i coś, co masz lub jesteś.

Jednorazowe hasło oparte na czasie

Hasło jednorazowe oparte na czasie (TOTP) to dobrze znany algorytm, który generuje unikatowe kody liczbowe wygasające po 30 sekundach. Algorytm przyjmuje dwa dane wejściowe, bieżący czas i unikatowy klucz.

Użytkownik wprowadza klucz do aplikacji zgodnej z protokołem TOTP podczas rejestrowania. Takie aplikacje obejmują:

  • Microsoft Authenticator.
  • Google Authenticator.
  • Wiele innych!

Wprowadzenie klucza do aplikacji można usprawnić za pomocą kodu QR. Aplikacja używa klucza i bieżącego czasu do generowania i wyświetlania unikatowych kodów co 30 sekund. Jeśli kod generowany przez aplikację jest zgodny z oczekiwaniami serwera, uwierzytelnianie zakończy się pomyślnie. Algorytm został zaprojektowany tak, aby był forgiving drobnych różnic między zegarami na urządzeniu a serwerem.

Jako forma uwierzytelniania wieloskładnikowego użytkownik jest zwykle monitowany o kod TOTP w połączeniu z hasłem. Hasło jest czymś, co znasz, a kod jest dowodem na coś, co masz. Jest to jedyny sposób generowania kodu przy użyciu klucza przechowywanego w aplikacji.

Domyślnie szablony projektów ASP.NET Core korzystające z tożsamości obejmują obsługę uwierzytelniania wieloskładnikowego dla aplikacji uwierzytelnienia TOTP. Formularz Konfigurowanie aplikacji uwierzytelniania szablonu Razor Pages wyświetla 32-znakowy klucz rejestracji w celu zainicjowania wartości tokenu. Jednak szablon domyślnie nie generuje kodu QR.

Uwaga

Kody wysyłane przez wiadomości SMS są powszechną alternatywą dla protokołu TOTP. W końcu telefon odbierający wiadomość SMS jest czymś, co masz. Jednak sms jako MFA jest stosunkowo łatwy dla przeciwnika do pokonania. W związku z tym kody SMS nie są już uważane za bezpieczną formę uwierzytelniania wieloskładnikowego.

Podsumowanie

W tej lekcji przedstawiono, czym jest uwierzytelnianie wieloskładnikowe i jak jest ono domyślnie implementowane w usłudze ASP.NET Core Identity. W następnej lekcji możesz dostosować istniejący formularz Konfigurowanie aplikacji wystawcy uwierzytelniania, aby udostępnić kod QR zawierający klucz rejestracji.