Gdy użytkownik tworzy klucz dostępu, serwer strony zależnej zapisuje pewne szczegóły, a dostawca danych logowania, np. Menedżer haseł Google, zapisuje inne. Więcej szczegółów:
- Serwer strony zależnej zapisuje dane uwierzytelniające klucza publicznego.
- Dostawca danych logowania zapisuje nazwę użytkownika, wyświetlaną nazwę, klucz prywatny i inne powiązane metadane. Te metadane pomagają użytkownikom zidentyfikować i wybrać wymagany klucz dostępu podczas logowania.
Potencjalne niespójności między danymi zapisanymi na serwerze strony zależnej a dostawcą danych logowania mogą negatywnie wpływać na wrażenia użytkowników. Problemy mogą pojawić się w tych sytuacjach:
- Dane logowania zostały usunięte na serwerze strony uzależnionej, ale nie u dostawcy danych logowania, co powoduje, że dostawca danych logowania wyświetla użytkownikowi usunięte dane logowania.
- Nazwa użytkownika lub wyświetlana nazwa została zaktualizowana na serwerze strony uzależnionej, ale nie u dostawcy danych logowania, co powoduje, że dostawca danych logowania wyświetla nieaktualne informacje.
Interfejs Signal API Menedżera danych logowania umożliwia stronom zależnym komunikowanie się z dostawcami danych logowania w celu usuwania danych logowania i aktualizowania metadanych użytkownika, takich jak nazwa użytkownika i wyświetlana nazwa. Istnieją 3 obsługiwane typy żądań dla różnych scenariuszy:
SignalUnknownCredentialRequest- Wskazuje, że określone dane logowania nie są już prawidłowe i powinny zostać ukryte lub usunięte z dostawcy danych logowania.
SignalAllAcceptedCredentialIdsRequest- Udostępnia dostawcy danych logowania 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 w bibliotece androidx.credentials w wersji 1.6.0-beta03 lub nowszej.
Implementacja
Aby użyć interfejsu Signal API, wykonaj te czynności:
Dodaj zależność Credential Manager do swojego projektu.
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Wywoływanie interfejsu Signal API
Aby wysłać żądanie sygnału do dostawcy danych logowania, 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ą uznawane za nieznane. Gdy dostawca danych logowania otrzyma ten sygnał, ukryje lub usunie dane logowania.Wykorzystanie
Użyj tego sygnału, gdy strona uzależniona nie może zweryfikować asercji klucza dostępu. Oznacza to, że klucz dostępu jest nieprawidłowy i musi zostać ukryty lub usunięty przez dostawcę danych logowania.
Wymagane parametry JSON dla tego żądania to
rpIdicredentialId. Więcej informacji o strukturze JSON znajdziesz w sekcji Opcje signalUnknownCredential.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 akceptowane dane uwierzytelniające (
SignalAllAcceptedCredentialIdsRequest)Użyj
SignalAllAcceptedCredentialIdsRequest, aby powiadomić dostawców danych logowania o zestawie wszystkich zaakceptowanych danych logowania. Gdy dostawca danych logowania otrzyma sygnał, ukrywa lub usuwa wszystkie dane logowania, które nie znajdują się na tej liście, lub odkrywa wszystkie 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ę zależną nie powiedzie się. Ten błąd oznacza, że klucz dostępu jest nieprawidłowy i musi zostać ukryty lub usunięty przez dostawcę danych logowania. Możesz też używać tego sygnału, gdy chcesz przekazać zestaw znanych identyfikatorów dostawcom danych logowania.
Wymagane parametry JSON dla tego żądania to
rpId,userIdiallAcceptedCredentialIds. Więcej informacji o strukturze JSON znajdziesz w sekcji Opcje signalAllAcceptedCredential.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() ) )Szczegóły bieżącego użytkownika (
SignalCurrentUserDetailsRequest)Użyj
SignalCurrentUserDetailsRequest, aby powiadomić dostawców danych logowania, że metadane, takie jak nazwa użytkownika i wyświetlana nazwa danego użytkownika, zostały zaktualizowane i powinny pojawić się u dostawcy danych logowania.Wykorzystanie
Użyj tego sygnału, gdy użytkownik lub strona uzależniona zaktualizuje metadane klucza dostępu powiązane z kontem użytkownika.
Wymagane parametry JSON dla tego żądania to
rpId,userId,nameidisplayName. Więcej informacji o strukturze JSON znajdziesz w sekcji Opcje signalCurrentUserDetails.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, wykonaj te czynności:
Zainstaluj przykładowego dostawcę danych uwierzytelniających o nazwie MyVault.
Włącz MyVault jako dostawcę danych logowania 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 dla powiadomień w sekcji Ustawienia > Aplikacje > MyVault > Powiadomienia > Kategorie > Kanał powiadomień interfejsu Signal API.
W aplikacji uruchom procesy, które wysyłają żądania sygnałów do dostawcy danych logowania. Na ekranie powinny pojawić się powiadomienia z MyVault. Potwierdza to, że dostawca danych logowania otrzymał żądania.