Dowiedz się, jak zintegrować klucze dostępu ze swoją usługą.
Struktura systemu kluczy dostępu
System kluczy dostępu składa się z kilku komponentów:
- Strona uzależniona: w kontekście klucza dostępu strona uzależniona (RP) obsługuje wystawianie i uwierzytelnianie kluczy dostępu. RP musi obsługiwać klienta – witrynę lub aplikację, która tworzy klucze dostępu lub uwierzytelnia się za pomocą kluczy – oraz serwer do rejestrowania, przechowywania i weryfikacji danych logowania wygenerowanych przez klucze dostępu po stronie klienta. Aplikacja mobilna klucza dostępu musi być powiązana z domeną serwera RP przy użyciu mechanizmu powiązań systemu operacyjnego, np. linków zasobów cyfrowych.
- Authenticator: urządzenie komputerowe, np. telefon komórkowy, tablet, laptop lub komputer stacjonarny, które może tworzyć i weryfikować klucze dostępu za pomocą oferowanej przez system operacyjny funkcji blokady ekranu.
- Menedżer haseł: oprogramowanie zainstalowane na urządzeniu użytkownika, które obsługuje, przechowuje i synchronizuje klucze dostępu, np. Menedżer haseł Google.
Proces rejestracji
Użyj interfejsu WebAuthn API na stronie internetowej lub biblioteki Credential Manager w aplikacji na Androida, aby utworzyć i zarejestrować nowy klucz dostępu.
Aby utworzyć nowy klucz dostępu, musisz podać kilka kluczowych elementów:
- Identyfikator objętej ograniczeniami: podaj identyfikator strony uzależnionej w postaci domeny internetowej.
- Informacje o użytkowniku: jego identyfikator, nazwa użytkownika i wyświetlana nazwa.
- Dane logowania do wykluczenia: informacje o wcześniej przechowywanych kluczach dostępu, które mają zapobiec zduplikowanej rejestracji.
- Typy kluczy dostępu: określa, czy urządzenie ma być używane jako mechanizm uwierzytelniający („platforma uwierzytelniająca platforma”) czy odłączany klucz bezpieczeństwa („wieloplatformowy / uwierzytelnianie w roamingu”). Dodatkowo elementy wywołujące mogą określić, czy dane logowania mają być wykrywalne, aby użytkownik mógł wybrać konto, na które będzie się logować.
Gdy grupa z ograniczonym dostępem poprosi o utworzenie klucza dostępu, a użytkownik potwierdzi go za pomocą odblokowania ekranu, tworzony jest nowy klucz dostępu i zwracane są dane logowania klucza publicznego. Wyślij je na serwer i zapisz identyfikator danych logowania oraz klucz publiczny na potrzeby przyszłego uwierzytelniania.
Szczegółowe informacje o tworzeniu i rejestrowaniu klucza dostępu:
- W przeglądarce: utwórz klucz do logowania się bez hasła.
- Na Androidzie: płynne uwierzytelnianie w aplikacjach za pomocą kluczy dostępu za pomocą interfejsu Credential Manager API
Proces uwierzytelniania
Użyj interfejsu WebAuthn API na stronie internetowej lub biblioteki Credential Manager w aplikacji na Androida, aby uwierzytelnić się za pomocą zarejestrowanego klucza dostępu.
Aby uwierzytelnić się za pomocą klucza dostępu, musisz udostępnić 2 kluczowe elementy:
- Identyfikator objętej ograniczeniami: podaj identyfikator strony uzależnionej w postaci domeny internetowej.
- Wyzwanie: wyzwanie wygenerowane przez serwer, które zapobiega atakom metodą powtórzenia.
Gdy grupa z ograniczonym dostępem zażąda uwierzytelnienia za pomocą klucza dostępu, a użytkownik potwierdzi to odblokowanie ekranu, zwrócone zostaną dane uwierzytelniające klucza publicznego. Wyślij ją na serwer i zweryfikuj podpis za pomocą zapisanego klucza publicznego.
Szczegółowe informacje o uwierzytelnianiu się za pomocą klucza dostępu:
- W przeglądarce: logowanie się za pomocą klucza dostępu przy użyciu autouzupełniania formularza
- Na Androidzie: płynne uwierzytelnianie w aplikacjach za pomocą kluczy dostępu za pomocą interfejsu Credential Manager API
Integracja po stronie serwera
Po utworzeniu klucza dostępu serwer musi podać kluczowe parametry, takie jak test zabezpieczający, informacje o użytkowniku, identyfikatory danych logowania do wykluczenia i inne. Następnie sprawdza utworzone dane uwierzytelniające klucza publicznego wysłane z klienta i przechowuje klucz publiczny w bazie danych. W przypadku uwierzytelniania za pomocą klucza dostępu serwer musi dokładnie zweryfikować dane logowania i podpis, aby umożliwić użytkownikowi zalogowanie się.
Jednak samodzielne zbudowanie serwera kluczy dostępu nie jest czasochłonne i może powodować błędy, które prowadzą do krytycznego incydentu związanego z bezpieczeństwem. Zalecamy użycie jednej z dostępnych bibliotek open source lub rozwiązania, które może przyspieszyć integrację kluczy dostępu.
Listę bibliotek open source znajdziesz w sekcji Libraries (biblioteki Passkeys.dev) lub przetworzonej przez ludzi liście bibliotek WebAuthn. Aby znaleźć rozwiązanie, FIDO Alliance ma listę certyfikowanych serwerów FIDO2.
Istniejące (starsze) mechanizmy uwierzytelniania
Jeśli obsługujesz klucze dostępu w dotychczasowej usłudze, przejście ze starszego mechanizmu uwierzytelniania (np. haseł) na klucze dostępu nie nastąpi w ciągu jednego dnia. Wiemy, że szybko wyeliminować słabszą metodę uwierzytelniania, ale może to spowodować dezorientację użytkowników lub pozostawić niektórych w kontakcie. Zalecamy na razie zachować istniejącą metodę uwierzytelniania.
Istnieje kilka przyczyn:
- Są użytkownicy w środowisku niezgodnym z kluczem dostępu: obsługa kluczy dostępu będzie rozszerzana w różnych systemach operacyjnych i przeglądarkach, ale użytkownicy starszych wersji nie mogą jeszcze używać kluczy dostępu.
- Ekosystem kluczy dostępu jeszcze nie dojrzał: ekosystem kluczy dostępu stale się rozwija. Może to poprawić zgodność z wygodą użytkowników i zgodność techniczną między różnymi środowiskami.
- Użytkownicy mogą nie być jeszcze gotowi do życia przy pomocy klucza dostępu: niektórzy ludzie niechętnie podchodzą do nowych rzeczy. W miarę rozwoju ekosystemu kluczy dostępu będą rozumieć, jak działają i dlaczego są przydatne.
Ponowne sprawdzanie obecnego mechanizmu uwierzytelniania
Klucze dostępu upraszczają i zwiększają bezpieczeństwo uwierzytelniania, ale zachowanie starych mechanizmów jest jak pozostawienie dziury. Zalecamy sprawdzenie i ulepszanie obecnych mechanizmów uwierzytelniania.
Hasła
Dla użytkowników tworzenie silnych haseł i zarządzanie nimi w każdej witrynie to nie lada wyzwanie. Zdecydowanie zalecamy korzystanie z wbudowanego w system menedżera haseł lub z samodzielnego programu. Niewielkie zmiany w formularzu logowania mogą mieć duży wpływ na bezpieczeństwo witryn i aplikacji. Sprawdź, jak możesz wprowadzić te zmiany:
- Sprawdzone metody dotyczące formularzy logowania (internet)
- Sprawdzone metody dotyczące formularza rejestracyjnego (internet)
- Zaloguj użytkownika za pomocą Menedżera danych logowania (Android)
Uwierzytelnianie dwuskładnikowe
Menedżer haseł pomaga użytkownikom w ich obsłudze, ale nie wszyscy z nich korzystają. Prośba o dodatkowe dane logowania nazywane hasłem jednorazowym to częsta metoda ochrony takich użytkowników. Hasła jednorazowe są zwykle przekazywane w e-mailach, SMS-ach lub w aplikacji uwierzytelniającej, np. Google Authenticator. Hasła jednorazowe to zwykle krótki tekst generowany dynamicznie i ważny tylko w ograniczonym zakresie czasowym, co zmniejsza prawdopodobieństwo przejęcia konta. Te metody nie są tak wydajne jak klucz dostępu, ale są znacznie lepsze niż pozostawianie użytkownikom samego hasła.
Jeśli jako opcję dostarczania hasła jednorazowego wybierzesz SMS-y, zapoznaj się z tymi sprawdzonymi metodami, by ułatwić użytkownikom wpisywanie hasła jednorazowego.
- Sprawdzone metody dotyczące formularzy jednorazowych w SMS-ach (strony internetowe)
- Automatyczna weryfikacja SMS-ów za pomocą interfejsu SMS Retriever API (Android)
Federacja tożsamości
Federacja tożsamości to kolejna opcja umożliwiająca użytkownikom bezpieczne i łatwe logowanie. Dzięki federacji tożsamości witryny i aplikacje mogą zezwalać użytkownikom na logowanie się przy użyciu tożsamości użytkownika od zewnętrznego dostawcy tożsamości. Na przykład funkcja Zaloguj się przez Google zapewnia deweloperom doskonałe konwersje, a użytkownicy uważają, że jest to łatwiejsze i korzystniejsze od uwierzytelniania za pomocą hasła. Federacja tożsamości to dodatek do kluczy dostępu. To świetny sposób na zarejestrowanie się, ponieważ strona lub aplikacja może w jednym kroku uzyskać podstawowe informacje z profilu użytkownika, a klucze dostępu znakomicie ułatwiają ponowne uwierzytelnianie.
Pamiętaj, że po wycofaniu z Chrome plików cookie innych firm w 2024 roku może to wpłynąć na niektóre systemy federacji tożsamości, w zależności od tego, jak zostały skonstruowane. Aby ograniczyć ten skutek, tworzymy nowy interfejs API przeglądarki o nazwie Federated Credential Management API (FedCM, w skrócie). Jeśli korzystasz z dostawcy tożsamości, zapoznaj się ze szczegółami i przekonaj się, czy musisz wdrożyć FedCM.
- Interfejs API zarządzania sfederowanymi danymi logowania (internet, FedCM)
- Omówienie funkcji Zaloguj się przez Google w internecie (Przeglądarka i Logowanie przez Google)
- Logowanie jednym dotknięciem na urządzeniach z Androidem (Android, logowanie jednym dotknięciem)
„Magiczne linki”
Logowanie za pomocą magicznego linku to metoda uwierzytelniania, w ramach której usługa dostarcza link logowania w e-mailu, aby użytkownik mógł go kliknąć, aby się uwierzytelnić. Pomaga to użytkownikom logować się bez zapamiętywania hasła, ale przełączanie się między przeglądarką/aplikacji a klientem poczty e-mail jest kłopotliwe. Poza tym mechanizm uwierzytelniania bazuje na e-mailach, dlatego słabe zabezpieczenia dostawcy poczty mogą narazić konta użytkowników na niebezpieczeństwo.
Zasoby szkoleniowe
Sieć
Aby zintegrować klucze dostępu ze swoją witryną, użyj interfejsu Web Uwierzytelnianie API (WebAuthn). Więcej informacji znajdziesz w tych materiałach:
- Tworzenie klucza dostępu do logowania się bez hasła: artykuł, w którym wyjaśniamy, jak umożliwić użytkownikom tworzenie kluczy dostępu do witryny.
- Logowanie się za pomocą klucza dostępu przez autouzupełnianie formularza: artykuł, w którym omawiamy projektowanie logowania bez hasła za pomocą kluczy dostępu z myślą o udostępnianiu dotychczasowych użytkowników.
- Implementowanie kluczy dostępu z autouzupełnianiem formularzy w aplikacji internetowej: ćwiczenie z programowania, z którego dowiesz się, jak wdrożyć klucze dostępu z autouzupełnianiem formularzy w aplikacji internetowej, aby uprościć i bezpieczniejsze logowanie się.
- Dowiedz się, jak wdrożyć klucze dostępu z autouzupełnianiem formularzy w aplikacji internetowej: film z ćwiczeniami omawiający ćwiczenia z programowania Implementowanie kluczy dostępu z autouzupełnianiem formularzy w aplikacji internetowej w celu zaimplementowania kluczy dostępu za pomocą autouzupełniania formularzy w aplikacji internetowej, co pozwala na łatwiejsze i bezpieczniejsze logowanie.
- Utwórz pierwszą aplikację WebAuthn: ćwiczenie z programowania, dzięki któremu dowiesz się, jak utworzyć prostą funkcję ponownego uwierzytelniania przy użyciu klucza dostępu w witrynie.
Android
Aby zintegrować klucze dostępu z aplikacją na Androida, użyj biblioteki Menedżera danych logowania. Więcej informacji znajdziesz w tych materiałach:
- Sign in your user with Credential Manager (Zaloguj użytkownika w Menedżerze danych logowania): artykuł, w którym omawiamy, jak zintegrować Menedżera danych logowania na Androidzie. Credential Manager to interfejs API Jetpack, który obsługuje wielokrotne logowanie, np. nazwę użytkownika i hasło, klucze dostępu oraz sfederowane rozwiązania do logowania (np. Zaloguj się przez Google) w ramach jednego interfejsu API.
- Płynne uwierzytelnianie w aplikacjach za pomocą kluczy dostępu przy użyciu interfejsu Credential Manager API: artykuł, w którym omawiamy integrowanie kluczy dostępu za pomocą Menedżera danych logowania na Androida.
- Dowiedz się, jak uprościć proces uwierzytelniania za pomocą interfejsu Credential Manager API w aplikacji na Androida: Dowiedz się, jak wdrożyć interfejs Credential Manager API, aby zapewnić płynne i bezpieczne uwierzytelnianie za pomocą kluczy lub hasła.
- Przykładowa aplikacja Menedżera danych logowania: przykładowy kod, który uruchamia Menedżera danych logowania do obsługi kluczy dostępu.
- Integracja Menedżera danych logowania z rozwiązaniem dostawcy danych uwierzytelniających | Dla programistów aplikacji na Androida
UX
Poznaj rekomendacje dotyczące wygody użytkowników kluczy dostępu: