Gdy użytkownik tworzy klucz dostępu, serwer strony ufającej zapisuje pewne szczegóły, a dostawca danych uwierzytelniających, np. Menedżer haseł Google, zapisuje inne. Więcej szczegółów:
- Serwer strony ufającej zapisuje dane logowania za pomocą klucza publicznego.
- Dostawca danych uwierzytelniających zapisuje nazwę użytkownika, wyświetlaną nazwę, klucz prywatny i inne powiązane metadane. Te metadane pomagają użytkownikom identyfikować i wybierać wymagany klucz dostępu podczas logowania.
Potencjalne niezgodności między danymi zapisanymi na serwerze strony ufającej a danymi dostawcy danych uwierzytelniających mogą pogorszyć wygodę użytkowników. Problemy mogą wystąpić w tych sytuacjach:
- Poświadczenie jest usuwane na serwerze strony ufającej, ale nie u dostawcy poświadczeń, co powoduje, że dostawca poświadczeń wyświetla użytkownikowi usunięte poświadczenie.
- Nazwa użytkownika lub nazwa wyświetlana zostanie zaktualizowana na serwerze strony ufającej, ale nie u dostawcy danych uwierzytelniających, co spowoduje, że dostawca danych uwierzytelniających będzie wyświetlać nieaktualne dane.
Signal API Menedżera danych logowania umożliwia stronom ufającym komunikowanie się z dostawcami danych uwierzytelniających w celu usuwania danych logowania i aktualizowania metadanych użytkownika, takich jak nazwa użytkownika i wyświetlana nazwa. W różnych scenariuszach obsługiwane są 3 typy żądań:
SignalUnknownCredentialRequest- Wskazuje, że określone dane logowania są już nieprawidłowe i powinny zostać ukryte lub usunięte przez dostawcę danych uwierzytelniających.
SignalAllAcceptedCredentialIdsRequest- Przekazuje dostawcy danych uwierzytelniających listę zaakceptowanych identyfikatorów danych logowania.
SignalCurrentUserDetailsRequest- Aktualizuje metadane użytkownika.
Zgodność wersji
Interfejs Signal API jest dostępny na urządzeniach z Androidem 15 lub nowszym oraz jest
dostępny od wersji 1.6.0-beta03 biblioteki androidx.credentials.
Implementacja
Aby korzystać z interfejsu Signal API:
Dodaj do projektu zależność od Menedżera danych logowania.
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha01") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha01" }
Wywołaj interfejs Signal API.
Aby wysłać żądanie sygnału do dostawcy danych uwierzytelniających, użyj obsługiwanego żądania sygnału. Każdy typ żądania sygnału wymaga żądania JSON, jak pokazano w tych przykładach:
Nieznane dane logowania (
SignalUnknownCredentialRequest)Użyj
SignalUnknownCredentialRequest, aby zasygnalizować, że dane logowania zostały odrzucone i są uważane za nieznane. Gdy dostawca danych uwierzytelniających otrzyma ten sygnał, ukryje lub usunie dane logowania.Wykorzystanie
Użyj tego sygnału, gdy strona ufająca nie może zweryfikować potwierdzenia klucza dostępu. Oznacza to, że klucz dostępu jest nieprawidłowy i musi zostać ukryty lub usunięty przez dostawcę danych uwierzytelniających.
Wymagane parametry JSON tego żądania to
rpIdicredentialId. Więcej informacji o strukturze JSON znajdziesz w sekcji signalUnknownCredential options.credentialManager.signalCredentialState( SignalUnknownCredentialRequest( requestJson = JSONObject().apply { put("rpId", rpId /* [String] RP ID of the relying party */) put("credentialId", credentialId /* [String] Credential ID of the credential to be hidden or deleted */) }.toString() ) )Wszystkie zaakceptowane dane logowania (
SignalAllAcceptedCredentialIdsRequest)Użyj
SignalAllAcceptedCredentialIdsRequest, aby powiadomić dostawców danych uwierzytelniających o zestawie wszystkich zaakceptowanych danych logowania. Gdy dostawca danych uwierzytelniających otrzyma sygnał, ukryje lub usunie wszystkie dane logowania, które nie są uwzględnione na tej liście, albo odkryje wcześniej ukryte dane logowania, które są teraz na liście.Wykorzystanie
Użyj tego sygnału, gdy weryfikacja klucza dostępu przez stronę ufającą nie powiedzie się. Oznacza to, że klucz dostępu jest nieprawidłowy i musi zostać ukryty lub usunięty przez dostawcę danych uwierzytelniających. Możesz też użyć tego sygnału, gdy musisz rozgłosić zestaw znanych identyfikatorów danych logowania dostawcom danych uwierzytelniających.
Wymagane parametry JSON tego żądania to
rpId,userIdiallAcceptedCredentialIds. Więcej informacji o strukturze JSON znajdziesz w sekcji signalAllAcceptedCredential options.credentialManager.signalCredentialState( SignalAllAcceptedCredentialIdsRequest( requestJson = JSONObject().apply { put("rpId", rpId /* [String] RP ID of the relying party */) put("userId", userId /* [String] User ID of the current user */) put( "allAcceptedCredentialIds", JSONArray(credentialIdsList /* [List<String>] List of accepted Credential IDs */) ) }.toString() ) )Dane bieżącego użytkownika (
SignalCurrentUserDetailsRequest)Użyj
SignalCurrentUserDetailsRequest, aby powiadomić dostawców danych uwierzytelniających, że metadane, takie jak nazwa użytkownika i wyświetlana nazwa danego użytkownika, zostały zaktualizowane i powinny być widoczne u dostawcy danych uwierzytelniających.Wykorzystanie
Użyj tego sygnału, gdy użytkownik lub strona ufająca zaktualizuje metadane klucza dostępu powiązane z kontem użytkownika.
Wymagane parametry JSON tego żądania to
rpId,userId,nameidisplayName. Więcej informacji o strukturze JSON znajdziesz w sekcji signalCurrentUserDetails options.credentialManager.signalCredentialState( SignalCurrentUserDetailsRequest( requestJson = JSONObject().apply { put("rpId", rpId /* [String] RP ID of the relying party */) put("userId", userId /* [String] User ID of the current user */) put("name", name /* [String] New Name to be updated for the current user */) put("displayName", displayName /* [String] New display name to be updated for the current user */) }.toString() ) )
Testowanie implementacji
Aby przetestować implementację interfejsu Signal API:
Zainstaluj przykładowego dostawcę danych uwierzytelniających o nazwie MyVault.
Włącz MyVault jako dostawcę danych uwierzytelniających w sekcji Ustawienia > Hasła, klucze dostępu i konta > Preferowana usługa.
Włącz wszystkie powiadomienia dla MyVault w sekcji Ustawienia > Aplikacje > MyVault > Powiadomienia.
Sprawdź, czy opcja Wyświetlaj na ekranie jest włączona w przypadku powiadomień w sekcji Ustawienia > Aplikacje > MyVault > Powiadomienia > Kategorie > Kanał powiadomień Signal API.
W aplikacji wywołaj procesy, które wysyłają żądania sygnału do dostawcy danych uwierzytelniających. Na ekranie powinny pojawić się powiadomienia z MyVault. Potwierdza to, że dostawca danych uwierzytelniających otrzymał żądania.