FIDO2 API für Android

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.

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.