API FIDO2 per Android

L'API FIDO2 consente alle applicazioni Android di creare e utilizzare credenziali basate su chiavi pubbliche attestate ed efficaci allo scopo di autenticare gli utenti. L'API fornisce l'implementazione di WebAuthn Client, che supporta l'utilizzo di autenticazione BLE, NFC e USB di roaming (token di sicurezza), nonché di un autenticatore di piattaforma, che consente all'utente di autenticarsi utilizzando la propria impronta o il proprio blocco schermo.

Integrazione

Il punto di ingresso dell'API FIDO2 è il Fido2ApiClient.

L'API supporta due operazioni:

  • La registrazione viene eseguita una volta per ogni autenticatore per account, quando l'utente associa un autenticatore a un account.
  • La firma viene eseguita ogni volta che la parte affidataria vuole autenticare un utente.

Sia la registrazione che la firma richiedono un'interazione da parte dell'utente.

Un'applicazione di esempio che mostra l'utilizzo dell'API è disponibile all'indirizzo https://github.com/android/identity-samples/tree/main/Fido2.

Interoperabilità con il sito web

È facile consentire agli utenti di condividere facilmente le credenziali tra il tuo sito web e la tua applicazione Android. A tal fine, utilizza i Digital Asset Links. Puoi dichiarare le associazioni ospitando un file JSON Digital Asset Links sul tuo sito web e aggiungere un link al file Digital Asset Link al file manifest della tua app.

Ad esempio, per associare https://example.com a un'app per Android com.example.android, segui questi tre passaggi obbligatori:

Passaggio 1. Ospita assetlinks.json sul tuo dominio

Crea un file JSON come questo e ospitalo su 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"
      ]
    }
  }
]

Assicurati che sia possibile eseguirne la scansione da parte di Google e che venga pubblicato con l'intestazione HTTP Content-Type: application/json.

sha256_cert_fingerprints è la fingerprint SHA256 del certificato di firma della tua app. Scopri ulteriori dettagli nella documentazione relativa ai link per app Android.

Nell'app per Android, aggiungi la seguente riga al file manifest in <application>:

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

Passaggio 3. Aggiungi una risorsa stringa asset_statements al filestring.xml

La stringa asset_statements è un oggetto JSON che specifica i file assetlinks.json da caricare. Devi utilizzare caratteri di escape prima di eventuali apostrofi e virgolette che utilizzi nella stringa. Ad esempio:

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

Per scoprire di più sull'associazione dell'app e del sito web, leggi la documentazione di SmartLock per password su Android.