API FIDO2 pour Android

L'API FIDO2 permet aux applications Android de créer et d'utiliser des identifiants basés sur des clés publiques fiables et attestés dans le but d'authentifier les utilisateurs. L'API fournit une implémentation du client WebAuthn qui prend en charge l'utilisation d'authentificateurs itinérants BLE, NFC et USB (clés de sécurité), ainsi qu'un authentificateur de plate-forme qui permet à l'utilisateur de s'authentifier à l'aide de son empreinte digitale ou du verrouillage de l'écran.

Intégration

Le point d'entrée de l'API FIDO2 est Fido2ApiClient.

L'API prend en charge deux opérations:

  • L'enregistrement s'effectue une fois par authentificateur et par compte, lorsque l'utilisateur associe un authentificateur à un compte.
  • La signature est effectuée chaque fois que le tiers de confiance souhaite authentifier un utilisateur.

L'inscription et la signature nécessitent une interaction de l'utilisateur.

Vous trouverez un exemple d'application illustrant l'utilisation de l'API sur la page https://github.com/android/identity-samples/tree/main/Fido2.

Interopérabilité avec votre site Web

Les utilisateurs peuvent facilement partager des identifiants entre votre site Web et votre application Android. Pour ce faire, utilisez Digital Asset Links. Vous pouvez déclarer des associations en hébergeant un fichier JSON Digital Asset Links sur votre site Web et en ajoutant un lien vers le fichier Digital Asset Link au fichier manifeste de votre application.

Par exemple, si vous souhaitez associer https://example.com à une com.example.android d'application Android, voici trois étapes requises:

Étape 1 : Héberger assetlinks.json sur votre domaine

Créez un fichier JSON comme celui-ci et hébergez-le sur 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"
      ]
    }
  }
]

Assurez-vous qu'il est crawlable par Google et qu'il est diffusé avec l'en-tête HTTP Content-Type: application/json.

sha256_cert_fingerprints correspond aux empreintes SHA256 du certificat de signature de votre application. Pour en savoir plus, consultez la documentation Android App Links.

Dans votre application Android, ajoutez la ligne suivante au fichier manifeste sous <application>:

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

Étape 3 : Ajouter une ressource de chaîne asset_statements au fichier string.xml

La chaîne asset_statements est un objet JSON qui spécifie les fichiers assetlinks.json à charger. Vous devez échapper les apostrophes et les guillemets que vous utilisez dans la chaîne. Exemple :

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

Pour en savoir plus sur l'association de votre application et de votre site Web, consultez la documentation sur Smart Lock pour les mots de passe sur Android.