API FIDO2 per Android

L'API FIDO2 consente alle applicazioni Android di creare e utilizzare credenziali basate su chiavi pubbliche efficaci e attestate allo scopo di autenticare gli utenti. L'API fornisce un'implementazione di client WebAuthn che supporta l'uso di autenticatori roaming BLE, NFC e USB (token di sicurezza) e un autenticatore di piattaforma che consente all'utente di autenticarsi utilizzando l'impronta o la schermata di blocco.

Integrazione

Il punto di contatto dell'API FIDO2 è Fido2ApiClient.

L'API supporta due operazioni:

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

Sia la registrazione che la firma richiedono l'interazione dell'utente.

Un'applicazione di esempio che dimostra 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 sul tuo sito web e nella tua applicazione per Android. Per farlo, utilizza i link ai asset digitali. Puoi dichiarare le associazioni ospitando un file JSON Digital Asset Links sul tuo sito web e aggiungendo un link al file Digital Asset Link al manifest della tua app.

Ad esempio, se vuoi associare https://example.com a un'app per Androidcom.example.android, ecco i tre passaggi necessari:

Passaggio 1: Ospita assetlinks.json nel tuo dominio

Crea un file JSON come questo e ospitalo all'indirizzo 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 scansionabile da Google e che venga pubblicato con l'intestazione HTTPContent-Type: application/json.

sha256_cert_fingerprints sono le impronte SHA256 del certificato di firma della tua app. Scopri di più nella documentazione di 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 file variables.xml

La stringa asset_statements è un oggetto JSON che specifica i file assetlinks.json da caricare. Devi eseguire l'interpretazione letterale di ogni apostrofi e virgolette utilizzate nella stringa. Ad esempio:

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

Per scoprire di più su come associare la tua app e il tuo sito web, leggi la documentazione di Smart Lock per le password su Android.