API FIDO2 pour Android

L'API FIDO2 permet aux applications Android de créer et d'utiliser des identifiants forts et certifiés basés sur une clé publique afin d'authentifier les utilisateurs. L'API fournit une implémentation du client WebAuthn, qui prend en charge l'utilisation d'authentificateurs en itinérance 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 ou du verrouillage de l'écran.

Intégration

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

L'API prend en charge deux opérations:

  • L'inscription 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 à l'adresse https://github.com/android/identity-samples/tree/main/Fido2.

Interopérabilité avec votre site Web

Vous pouvez facilement permettre aux utilisateurs de partager facilement 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 ce fichier au fichier manifeste de votre application.

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

É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'elle peut être explorée par Google et qu'elle est diffusée 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. Ajoutez 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 à votre site Web, consultez la documentation sur Smart Lock pour les mots de passe sur Android.