Mit der FIDO2 API können Android-Anwendungen starke, attestierte Anmeldedaten auf Basis öffentlicher Schlüssel zur Authentifizierung von Nutzern erstellen und verwenden. Die API bietet eine WebAuthn-Client-Implementierung, die die Verwendung von BLE-, NFC- und USB-Roaming-Authenticatoren (Sicherheitsschlüsseln) unterstützt, sowie eine Plattformauthentifizierung, mit der sich der Nutzer mithilfe seines Fingerabdrucks oder der Displaysperre authentifizieren kann.
Integration
Der Einstiegspunkt der FIDO2 API ist der Fido2ApiClient.
Die API unterstützt zwei Vorgänge:
- Die Registrierung erfolgt einmal pro Authenticator und Konto, wenn der Nutzer einem Konto einen Authenticator zuordnet.
- Das Signieren erfolgt immer dann, wenn die vertrauende Partei einen Nutzer authentifizieren möchte.
Sowohl für die Registrierung als auch für die Signatur ist eine Nutzerinteraktion erforderlich.
Eine Beispielanwendung zur Demonstration der API-Nutzung finden Sie unter https://github.com/android/identity-samples/tree/main/Fido2.
Interoperabilität mit Ihrer Website
Nutzer können Anmeldedaten ganz einfach auf Ihrer Website und in Ihrer Android-Anwendung weitergeben. Nutzen Sie dazu Digital Asset Links. Du kannst Verknüpfungen deklarieren, indem du auf deiner Website eine Digital Asset Links-JSON-Datei hostest und dem Manifest deiner App einen Link zur Digital Asset Link-Datei hinzufügst.
Wenn du beispielsweise https://example.com
mit der Android-App com.example.android
verknüpfen möchtest, sind die folgenden drei Schritte erforderlich:
Schritt 1: assetlinks.json
in Ihrer Domain hosten
Erstellen Sie eine JSON-Datei wie diese und hosten Sie sie unter https://example.com/.well-known/assetlinks.json
.
[
{
"relation" : [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target" : {
"namespace" : "web",
"site" : "https://example.com"
}
},
{
"relation" : [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target" : {
"namespace" : "android_app",
"package_name" : "com.example.android",
"sha256_cert_fingerprints" : [
"DE:AD:BE:EF"
]
}
}
]
Achte darauf, dass sie von Google gecrawlt werden kann und mit dem HTTP-Header Content-Type: application/json
bereitgestellt wird.
sha256_cert_fingerprints
ist die SHA256-Fingerabdrücke des Signaturzertifikats Ihrer App.
Weitere Informationen
Schritt 2: Mit assetlinks.json
in der Android-App verknüpfen
Füge in deiner Android-App die folgende Zeile zur Manifestdatei unter <application>
hinzu:
<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Schritt 3: Eine asset_statements
-String-Ressource zur Datei Strings.xml hinzufügen
Der String asset_statements
ist ein JSON-Objekt, das die zu ladenden assetlinks.json
-Dateien angibt. Apostrophe und Anführungszeichen, die Sie in der Zeichenfolge verwenden, müssen mit Escapezeichen versehen werden. Beispiel:
<string name="asset_statements" translatable="false">
[{
\"include\": \"https://example.com/.well-known/assetlinks.json\"
}]
</string>
Weitere Informationen zum Verknüpfen Ihrer App mit Ihrer Website finden Sie in der Dokumentation zu SmartLock für Passwörter unter Android.