Mit der FIDO2 API können Android-Anwendungen starke, nachweislich auf dem öffentlichen Schlüssel basierende Anmeldedaten erstellen und verwenden, um Nutzer zu authentifizieren. Die API bietet eine WebAuthn-Client-Implementierung, die die Verwendung von BLE-, NFC- und USB-Roaming-Authentifikatoren (Sicherheitsschlüsseln) sowie einen Plattform-Authentifikator unterstützt, mit dem sich Nutzer per Fingerabdruck oder Displaysperre authentifizieren können.
Integration
Der Einstiegspunkt der FIDO2 API ist Fido2ApiClient.
Die API unterstützt zwei Vorgänge:
- Die Registrierung erfolgt einmal pro Authentifizierungskonto und Konto, wenn der Nutzer einen Authentifizierungsantrag mit einem Konto verknüpft.
- Die Signierung erfolgt immer dann, wenn die vertrauende Seite einen Nutzer authentifizieren möchte.
Sowohl Registrierung als auch Signatur erfordern eine Nutzerinteraktion.
Eine Beispielanwendung zur Verwendung der API 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-App teilen. Dazu kannst du die Digital Asset Links nutzen. Du kannst Verknüpfungen deklarieren, indem du eine Digital Asset Links-JSON-Datei auf deiner Website hostet und dem Manifest deiner App einen Link zur Digital Asset Link-Datei hinzufügst.
Wenn Sie beispielsweise https://example.com
mit der Android-App com.example.android
verknüpfen möchten, 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 er von Google gecrawlt werden kann und mit dem HTTP-Header Content-Type: application/json
bereitgestellt wird.
sha256_cert_fingerprints
ist der SHA256-Fingerabdruck des Signaturzertifikats Ihrer App.
Weitere Informationen finden Sie in der Dokumentation zu Android-App-Links.
Schritt 2: In der Android-App mit assetlinks.json
verknüpfen
Fügen Sie in der Android-App der Manifestdatei unter <application>
die folgende Zeile hinzu:
<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Schritt 3: Fügen Sie der Datei „strings.xml“ eine asset_statements
-Stringressource hinzu
Der String asset_statements
ist ein JSON-Objekt, das die zu ladenden assetlinks.json
-Dateien angibt. Apostrophe und Anführungszeichen im String 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 deiner App und deiner Website findest du in der Dokumentation zu SmartLock für Passwörter auf Android-Geräten.