Wenn ein Nutzer einen Passkey erstellt, speichert der Server der vertrauenden Partei bestimmte Details, während der Anbieter von Anmeldedaten, z. B. der Google Passwortmanager, andere speichert. Im Detail:
- Der Server der vertrauenden Seite speichert die Anmeldedaten des öffentlichen Schlüssels.
- Der Anbieter von Anmeldedaten speichert den Nutzernamen, den Anzeigenamen, den privaten Schlüssel und andere zugehörige Metadaten. Anhand dieser Metadaten können Nutzer den erforderlichen Passkey bei der Anmeldung identifizieren und auswählen.
Mögliche Inkonsistenzen zwischen den auf dem Server der vertrauenden Partei und beim Anbieter von Anmeldedaten gespeicherten Daten können zu einer schlechten Nutzererfahrung führen. In den folgenden Szenarien können Probleme auftreten:
- Ein Ausweisdokument wird auf dem Server der vertrauenden Partei gelöscht, aber nicht beim Anbieter des Ausweisdokuments. Das führt dazu, dass der Anbieter des Ausweisdokuments dem Nutzer das gelöschte Ausweisdokument anzeigt.
- Ein Nutzername oder Anzeigename wird auf dem Server der vertrauenden Seite aktualisiert, aber nicht beim Anbieter der Anmeldedaten. Daher werden beim Anbieter der Anmeldedaten die veralteten Details angezeigt.
Mit der Signal API des Credential Managers können vertrauende Seiten mit den Anmeldedatenanbietern kommunizieren, um Anmeldedaten zu löschen und Nutzermetadaten wie den Nutzernamen und den Anzeigenamen zu aktualisieren. Es gibt drei unterstützte Anfragetypen für verschiedene Szenarien:
SignalUnknownCredentialRequest- Gibt an, dass bestimmte Anmeldedaten nicht mehr gültig sind und vom Anbieter der Anmeldedaten ausgeblendet oder entfernt werden sollten.
SignalAllAcceptedCredentialIdsRequest- Stellt dem Anbieter von Anmeldedaten eine Liste der akzeptierten Anmeldedaten-IDs zur Verfügung.
SignalCurrentUserDetailsRequest- Aktualisiert die Metadaten des Nutzers.
Versionskompatibilität
Die Signal API ist auf Geräten mit Android 15 oder höher und ab Version 1.6.0-beta03 der androidx.credentials-Bibliothek verfügbar.
Implementierung
So verwenden Sie die Signal API:
Fügen Sie Ihrem Projekt die Credential Manager-Abhängigkeit hinzu.
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Signal API aufrufen
Verwenden Sie eine unterstützte Signalanfrage, um eine Signalanfrage an den Anbieter von Anmeldedaten zu senden. Für jeden der Signalanfragetypen ist eine JSON-Anfrage erforderlich, wie in den folgenden Beispielen gezeigt:
Unbekanntes Ausweisdokument (
SignalUnknownCredentialRequest)Verwenden Sie
SignalUnknownCredentialRequest, um zu signalisieren, dass ein Ausweis abgelehnt und als unbekannt betrachtet wird. Wenn der Anbieter der Anmeldedaten dieses Signal empfängt, blendet er die Anmeldedaten aus oder löscht sie.Verwendung
Verwenden Sie dieses Signal, wenn die vertrauende Partei eine Passkey-Assertion nicht verifizieren kann. Das bedeutet, dass der Passkey ungültig ist und vom Anbieter der Anmeldedaten ausgeblendet oder entfernt werden muss.
Die erforderlichen JSON-Parameter für diese Anfrage sind
rpIdundcredentialId. Weitere Informationen zur JSON-Struktur finden Sie unter signalUnknownCredential-Optionen.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() ) )Alle akzeptierten Anmeldedaten (
SignalAllAcceptedCredentialIdsRequest)Verwenden Sie
SignalAllAcceptedCredentialIdsRequest, um Anbieter von Anmeldedaten über die Gruppe aller akzeptierten Anmeldedaten zu benachrichtigen. Sobald das Signal vom Anbieter der Anmeldedaten empfangen wird, blendet er alle Anmeldedaten aus oder löscht sie, die nicht in dieser Liste enthalten sind. Außerdem blendet er alle zuvor ausgeblendeten Anmeldedaten ein, die jetzt in der Liste enthalten sind.Verwendung
Verwenden Sie dieses Signal, wenn die Passkey-Bestätigung durch die vertrauende Partei fehlschlägt. Dieser Fehler bedeutet, dass der Passkey ungültig ist und vom Anbieter der Anmeldedaten ausgeblendet oder entfernt werden muss. Sie können dieses Signal auch verwenden, wenn Sie die Gruppe bekannter Anmeldedaten-IDs an Anmeldedatenanbieter übertragen müssen.
Die erforderlichen JSON-Parameter für diese Anfrage sind
rpId,userIdundallAcceptedCredentialIds. Weitere Informationen zur JSON-Struktur finden Sie unter signalAllAcceptedCredential-Optionen.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() ) )Aktuelle Nutzerdetails (
SignalCurrentUserDetailsRequest)Mit
SignalCurrentUserDetailsRequestkönnen Sie Anbieter von Anmeldedaten darüber informieren, dass Metadaten wie der Nutzername und der Anzeigename für einen bestimmten Nutzer aktualisiert wurden und im Anbieter von Anmeldedaten angezeigt werden sollten.Verwendung
Verwenden Sie dieses Signal, wenn der Nutzer oder die vertrauende Partei die mit dem Nutzerkonto verknüpften Passkey-Metadaten aktualisiert.
Die erforderlichen JSON-Parameter für diese Anfrage sind
rpId,userId,nameunddisplayName. Weitere Informationen zur JSON-Struktur finden Sie unter signalCurrentUserDetails-Optionen.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() ) )
Implementierung testen
So testen Sie Ihre Implementierung der Signal API:
Installieren Sie das Beispiel für den Anmeldedatenanbieter mit dem Namen MyVault.
Aktiviere MyVault als Anbieter von Anmeldedaten in den Einstellungen > Passwörter, Passkeys und Konten > Bevorzugter Dienst.
Aktiviere alle Benachrichtigungen für MyVault unter Einstellungen > Apps > MyVault > Benachrichtigungen.
Prüfen Sie, ob Auf dem Bildschirm einblenden für Benachrichtigungen aktiviert ist. Gehen Sie dazu zu Einstellungen > Apps > MyVault > Benachrichtigungen > Kategorien > Signal API-Benachrichtigungskanal.
Lösen Sie in Ihrer App die Abläufe aus, die die Signalanfragen an den Anbieter von Anmeldedaten senden. Auf dem Display sollten Benachrichtigungen von MyVault angezeigt werden. So wird bestätigt, dass der Anbieter von Anmeldedaten die Anfragen erhalten hat.