FIDO2 API für Android

Mit der FIDO2 API können Android-Anwendungen starke, gesicherte öffentliche Schlüssel erstellen und verwenden, die Nutzer authentifizieren. Die API bietet eine WebAuthn-Clientimplementierung, die die Verwendung von BLE-, NFC- und USB-Roaming-Authentifizierungsschlüsseln (Sicherheitsschlüsseln) sowie eine Plattformauthentifizierer unterstützt. Authentifizierung für den Nutzer per Fingerabdruck oder Displaysperre.

Integration

Der Einstiegspunkt der FIDO2 API ist Fido2ApiClient.

Die API unterstützt zwei Vorgänge:

  • Die Registrierung wird einmal pro Authentifizierungskonto pro Konto ausgeführt, wenn der Nutzer einen Authentifizierungsnutzer mit einem Konto verknüpft.
  • Die Signierung erfolgt immer dann, wenn die vertrauende Seite einen Nutzer authentifizieren möchte.

Sowohl die Registrierung als auch die Signatur erfordern eine Nutzerinteraktion.

Eine Beispielanwendung zur Verwendung der API finden Sie unter https://github.com/android/security-samples/tree/master/Fido.

Interoperabilität mit Ihrer Website

Es ist einfach, Nutzern die nahtlose Freigabe von Anmeldedaten auf Ihrer Website und in Ihrer Android-App zu ermöglichen. Dazu können Sie Digital Asset Links verwenden. 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 Link-Datei hinzufügen.

Wenn du beispielsweise https://example.com mit einer Android-App com.example.android verknüpfen möchtest, gehen Sie so vor:

Schritt 1: assetlinks.json in Ihrer Domain hosten

Erstellen Sie eine solche JSON-Datei 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 können und mit dem HTTP-Header Content-Type: application/json bereitgestellt werden.

sha256_cert_fingerprints ist der SHA256-Fingerabdruck des Signaturzertifikats Ihrer App. Weitere Informationen

Fügen Sie der Android-App in der Manifestdatei unter <application> die folgende Zeile hinzu:

<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />

Schritt 3: asset_statements-String-Ressource in „strings.xml“-Datei hinzufügen

Der String asset_statements ist ein JSON-Objekt, das die zu ladenden assetlinks.json-Dateien angibt. Du musst alle Apostrophe und Anführungszeichen, die du im String verwendest, maskieren. 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 for Passwords unter Android.