FIDO2-API für Android

Mit der FIDO2 API können Android-Anwendungen starke, attestierte öffentliche Schlüssel-basierte Anmeldedaten zur Authentifizierung von Nutzern erstellen und verwenden. 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 der Nutzer per Fingerabdruck oder 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 einen Authenticator mit einem Konto verknüpft.
  • Die Signatur wird jedes Mal erstellt, wenn die vertrauende Partei einen Nutzer authentifizieren möchte.

Sowohl die Registrierung als auch die Signatur erfordern eine Nutzerinteraktion.

Eine Beispielanwendung zur Veranschaulichung der API-Nutzung finden Sie unter https://github.com/android/identity-samples/tree/main/Fido2.

Interoperabilität mit Ihrer Website

Sie können Nutzern ganz einfach die Möglichkeit geben, Anmeldedaten nahtlos auf Ihrer Website und in Ihrer Android-App zu teilen. Verwende dazu Digital Asset Links. Sie können Verknüpfungen deklarieren, indem Sie eine Digital Asset Links-JSON-Datei auf Ihrer Website hosten und dem Manifest Ihrer App einen Link zur Digital Asset Links-Datei hinzufügen.

Wenn Sie beispielsweise https://example.com mit einer Android-App verknüpfen möchtencom.example.android, sind 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"
      ]
    }
  }
]

Achten Sie darauf, dass die Seite 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.

Fügen Sie in Ihrer 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 String-Ressource asset_statements 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 maskiert 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 SmartLock-Dokumentation für Passwörter auf Android-Geräten.