FIDO2-API für Android

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

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.