INCONE60 Green - Digital and green transition of small ports
Andrzej Chybicki: projekty związane z wykorzystaniem sztucznej inteligencji to znacząca część naszych projektów
Wprowadzenie do Passkey w Keycloak

Tradycyjne hasła od dawna stanowią słaby punkt zabezpieczeń cyfrowych. Często te same hasła są wykorzystywane w wielu miejscach, co zwiększa ryzyko ich przejęcia i ułatwia ataki phishingowe. Passkeys to nowoczesne rozwiązanie, które zastępuje hasła kryptograficznymi parami kluczy przypisanymi do konkretnej aplikacji i zarządzanymi przez mechanizmy wbudowane w platformę. Dzięki wykorzystaniu wielu czynników weryfikacyjnych spełniają wymagania MFA (wieloskładnikowego uwierzytelniania) i są zgodne z powszechnie stosowanymi standardami.

W tym wpisie pokażemy, jak skonfigurować Passkeys na podstawie ustawień Keycloak omówionych we wcześniejszych artykułach (zobacz Zabezpieczanie endpointów Java Spring za pomocą Keycloak lub Praktyczne Keycloak SSO: od konfiguracji do integracji). Choć Passkeys zapewniają wygodne i bezpieczne logowanie, ich wdrożenie w istniejącym systemie może wiązać się z pewnymi wyzwaniami. Przeprowadzimy Cię przez podstawowy proces konfiguracji. Jeśli chcesz unowocześnić swoją strategię zabezpieczeń, to idealne miejsce, by zacząć.

Passkeys to metoda logowania, zaprojektowana jako bezpieczniejsza i wygodniejsza alternatywa dla tradycyjnych haseł. W przeciwieństwie do nich, które mogą zostać wyłudzone, skradzione lub zapomniane, passkeys eliminują te zagrożenia dzięki wykorzystaniu kryptograficznych par kluczy przechowywanych w zaufanym narzędziu uwierzytelniającym, takim jak smartfon, inne urządzenie lub menedżer haseł. Zamiast ręcznie tworzyć i zapamiętywać hasło, użytkownik korzysta z autoryzowanego narzędzia do generowania i zarządzania passkey.

Passkey składa się z dwóch elementów:

    • Klucz publiczny – przechowywany przez aplikację
    • Klucz prywatny – bezpiecznie zapisany w narzędziu uwierzytelniającym użytkownika

Klucz prywatny nigdy nie opuszcza urządzenia, co gwarantuje, że nawet w przypadku naruszenia klucza publicznego konta pozostają bezpieczne.

  1. Podczas logowania aplikacja wysyła wyzwanie do narzędzia uwierzytelniającego.
  2. Użytkownik potwierdza swoją tożsamość za pomocą biometrii (Face ID, Touch ID), kodu PIN lub hasła.
  3. Narzędzie uwierzytelniające podpisuje wyzwanie kluczem prywatnym i odsyła je do weryfikacji.
  4. Jeśli podpis jest poprawny, dostęp zostaje przyznany – bez konieczności używania hasła.

Zalety Passkeys

    • W przeciwieństwie do haseł, passkeys nie mogą zostać skradzione w wyniku ataków phishingowych. Są powiązane z konkretną stroną internetową lub aplikacją, co oznacza, że nie zadziałają na fałszywych stronach logowania. Nawet jeśli użytkownik wejdzie na stronę phishingową, nie zostanie poproszony o użycie passkey, a logowanie nie nastąpi, co zapobiega kradzieży danych uwierzytelniających.
    • Użytkownicy nie muszą zarządzać wieloma hasłami do różnych kont – logowanie sprowadza się do użycia biometrii (Face ID, Touch ID) lub kodu PIN urządzenia.
    • Hasła można odgadnąć, ponownie wykorzystać lub wyciekają – passkeys nie. Nawet niektóre metody 2FA, takie jak kody SMS, są podatne na phishing i ataki typu SIM-swapping, podczas gdy passkeys są na nie odporne. Dzięki wykorzystaniu kryptografii klucza publicznego nie mogą zostać przechwycone ani skradzione w wyniku naruszenia danych.
    • Passkeys są przechowywane w platformowych narzędziach uwierzytelniających (np. Google Password Manager, Windows Hello). Mogą być automatycznie synchronizowane między urządzeniami, co zapewnia dostęp bez potrzeby ręcznego przenoszenia kluczy.

Ograniczenia Passkeys

    • Nie wszystkie strony internetowe i aplikacje obsługują passkeys, co oznacza, że użytkownicy mogą nadal musieć polegać na hasłach w niektórych usługach.

    • Utrata dostępu do głównego urządzenia lub konta w chmurze może zablokować użytkownika, wymagając opcji odzyskiwania, takich jak urządzenia zapasowe.

    • Wielu użytkowników nie zna jeszcze passkeys, a przejście z haseł wymaga edukacji.

    • Ponieważ passkeys nie wymagają ręcznego wpisywania, użytkownicy mogą odczuwać brak kontroli nad swoimi danymi logowania w porównaniu do tradycyjnego zarządzania hasłami.

Konfiguracja Passkey dla Realm

Keycloak oferuje elastyczne opcje uwierzytelniania, tradycyjnie opierając się na hasłach i uwierzytelnianiu wieloskładnikowym (MFA) z wykorzystaniem jednorazowych kodów (OTP). Jednak wraz z rosnącą popularnością metod bezhasłowych, Keycloak obsługuje również WebAuthn Passwordless (Passkeys). W tej konfiguracji wyłączymy zarówno hasła, jak i uwierzytelnianie OTP, zapewniając, że użytkownicy mogą logować się wyłącznie za pomocą Passkeys.

Kolejność mechanizmów uwierzytelniania określa przebieg logowania w Keycloak. Pozostawiamy uwierzytelnianie za pomocą plików cookie, aby użytkownicy mogli utrzymywać aktywne sesje. Aby obsłużyć uwierzytelnianie zewnętrzne, włączamy Identity Provider Redirect, co pozwala na logowanie za pomocą dostawców tożsamości, takich jak Google lub inna instancja Keycloak.

Następnie konfigurujemy właściwy formularz logowania. Domyślnie browser flow w Keycloak obejmuje nazwę użytkownika, hasło i uwierzytelnianie wieloskładnikowe (MFA). Możemy wyłączyć wszystkie te elementy i zastąpić je jednym krokiem – dodaniem WebAuthn Passwordless Authenticator, co zapewni, że użytkownicy będą mogli logować się wyłącznie za pomocą Passkeys.

 

Końcowa konfiguracja powinna wyglądać następująco:

Gdy WebAuthn Passwordless Authenticator zostanie skonfigurowany, kolejnym krokiem jest powiązanie go z przebiegiem logowania w przeglądarce.

Teraz pozostaje już tylko wymusić reset hasła dla przykładowego użytkownika, ustawiając wymaganą akcję na WebAuthn Register Passwordless.

Po kliknięciu linku w otrzymanym e-mailu Keycloak wyświetli okno dialogowe z instrukcją rejestracji passkey.

Wystarczy kliknąć, aby zarejestrować passkey.

Na ekranie pojawi się platformowy mechanizm uwierzytelniania urządzenia, prezentujący dostępne opcje potwierdzenia tożsamości użytkownika. Załóżmy, że chcemy skorzystać z Windows Hello i zweryfikować tożsamość za pomocą kodu PIN – tego samego, który jest używany do logowania do konta Windows.

Passkey powinien być teraz widoczny w sekcji poświadczeń wybranego użytkownika.

Teraz możemy przejść do strony logowania w danym realm i spróbować użyć passkey zamiast standardowej nazwy użytkownika i hasła.

Twój platformowy mechanizm uwierzytelniania powinien ponownie się pojawić, oferując użycie zarejestrowanego passkey.

 

Passkeys nie są rozwiązaniem idealnym, ale dla większości użytkowników ich zalety przewyższają ograniczenia. Wraz z rosnącą adopcją wiele z tych niedoskonałości zostanie wyeliminowanych. Jednak w krótkim okresie zarówno użytkownicy, jak i organizacje muszą być świadomi potencjalnych wyzwań związanych z ich wdrażaniem.

 

Organizacje, które chcą zintegrować passkeys ze swoimi systemami uwierzytelniania, mogą skorzystać z narzędzi takich jak Keycloak. Dzięki takiej integracji użytkownicy zyskują bezpieczny, bezhasłowy dostęp do aplikacji, przy jednoczesnym wykorzystaniu kluczowych funkcji Keycloak, takich jak Single Sign-On (SSO), uwierzytelnianie wieloskładnikowe (MFA) oraz szczegółowa kontrola dostępu.