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 des clés publiques, à des fins d'authentification des utilisateurs. L'API fournit une mise en œuvre de WebAuthn Client qui accepte l'utilisation d'authentificateurs d'itinérance (clés de sécurité) BLE, NFC et USB, ainsi que d'un authentificateur de plate-forme qui permet à l'utilisateur de s'authentifier à l'aide de son empreinte digitale ou de son verrouillage d'écran.

Intégration

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

L'API accepte deux opérations:

  • L'enregistrement est effectué une fois par authentificateur par compte, lorsque l'utilisateur associe un authentificateur à un compte.
  • La signature est effectuée chaque fois que la partie 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

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 Links dans le fichier manifeste de votre application.

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

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

Créez un fichier JSON comme celui-ci et hébergez-le dans 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 peut être exploré à partir de 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 sur les liens vers une application Android.

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 et de votre site Web, consultez la documentation SmartLock pour les mots de passe sur Android.