API FIDO2 pour Android

L'API FIDO2 permet aux applications Android de créer et d'utiliser des identifiants sécurisés basés sur des clés publiques dans le but d'authentifier les utilisateurs. L'API fournit une mise en œuvre de client WebAuthn, compatible avec l'utilisation d'authentificateurs BLE, NFC et USB (clés de sécurité) ainsi que d'un authentificateur de plate-forme, qui permet l'authentification de l'utilisateur avec son empreinte digitale ou son verrouillage d'écran.

Intégration

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

L'API accepte deux opérations:

  • L'enregistrement est effectué une fois par authentificateur et par compte, lorsque l'utilisateur associe un authentificateur à un compte.
  • La signature est effectuée chaque fois que la partie fiable veut authentifier un utilisateur.

L'inscription et la signature nécessitent des interactions de la part des utilisateurs.

Vous trouverez un exemple d'application illustrant l'utilisation de l'API à l'adresse https://github.com/android/security-samples/tree/master/Fido.

Interopérabilité avec votre site Web

Les utilisateurs peuvent facilement partager des identifiants entre leur site Web et leur 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, puis 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, voici trois étapes obligatoires:

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

Créez un fichier JSON de ce type et hébergez-le à l'adresse 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 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. 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 de SmartLock pour les mots de passe sur Android.