API FIDO2 per Android

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

Integrazione

Il punto di ingresso dell'API FIDO2 è Fido2ApiClient.

L'API supporta due operazioni:

  • La registrazione viene effettuata 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 richiedente vuole autenticare un utente.

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

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

Interoperabilità con il sito web

Consentire agli utenti di condividere facilmente le credenziali tra siti web e app Android è semplice. Per farlo, utilizza Digital Asset Links. 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 file manifest dell'app.

Ad esempio, se vuoi associare https://example.com a un'app per Android com.example.android, sono necessari i 3 passaggi seguenti:

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 possibile eseguire la scansione da parte di Google e che sia pubblicato con l'intestazione HTTP Content-Type: application/json.

sha256_cert_fingerprints è le fingerprint SHA256 del certificato di firma della tua app. Puoi trovare 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 file rows.xml

La stringa asset_statements è un oggetto JSON che specifica i file assetlinks.json da caricare. Devi eseguire l'escape di tutti gli apostrofi e delle virgolette utilizzati 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 SmartLock for Passwords su Android.