FIDO2 API für Android

Mit der FIDO2-API können Android-Anwendungen starke, auf öffentlichen Schlüsseln basierende Anmeldeinformationen erstellen und verwenden, um Benutzer 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 der Benutzer anhand seines Fingerabdrucks oder seines Screenlocks authentifizieren kann.

Integration

Der Einstiegspunkt für die FIDO2-API ist der Fido2ApiClient .

Die API unterstützt zwei Vorgänge:

  • Die Registrierung erfolgt einmal pro Authentifikator pro Konto, wenn der Benutzer einem Konto einen Authentifikator zuordnet.
  • Die Signierung erfolgt immer dann, wenn die vertrauende Partei einen Benutzer authentifizieren möchte.

Sowohl die Registrierung als auch das Signieren erfordern eine Benutzerinteraktion.

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

Interoperabilität mit Ihrer Website

Es ist einfach, Benutzern das nahtlose Teilen von Anmeldeinformationen auf Ihrer Website und in Ihrer Android-Anwendung zu ermöglichen. Nutzen Sie dazu die Digital Asset Links . Sie können Assoziationen deklarieren, indem Sie eine JSON-Datei für Digital Asset Links auf Ihrer Website hosten und dem Manifest Ihrer App einen Link zur Digital Asset Link-Datei hinzufügen.

Wenn Sie beispielsweise https://example.com mit einer Android-App com.example.android , sind drei Schritte erforderlich:

Schritt 1. assetlinks.json Sie assetlinks.json in Ihrer Domain

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"
      ]
    }
  }
]

Stellen Sie sicher, dass es von Google crawlbar ist und mit dem HTTP-Header Content-Type: application/json .

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 asset_statements der Datei asset_statements Zeichenfolgenressource asset_statements

Die Zeichenfolge asset_statements ist ein JSON-Objekt, das die zu assetlinks.json Dateien assetlinks.json angibt. Sie müssen alle Apostrophe und Anführungszeichen, die Sie in der Zeichenfolge verwenden, maskieren. Beispielsweise:

<string name="asset_statements" translatable="false">
[{
  \"include\": \"https://example.com/.well-known/assetlinks.json\"
}]
</string>

Weitere Informationen zum Verknüpfen Ihrer App und Ihrer Website finden Sie in der Dokumentation zu SmartLock for Passwords in Android .