API FIDO2 per Android

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

Integrazione

Il punto di contatto dell'API FIDO2 è 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 fiduciaria vuole autenticare un utente.

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

Puoi trovare un'applicazione di esempio che mostra l'utilizzo dell'API all'indirizzo https://github.com/android/security-samples/tree/master/Fido.

Interoperabilità con il sito web

È facile consentire agli utenti di condividere senza problemi le credenziali sul tuo sito web e sulla tua app Android. A tale scopo, 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, se vuoi associare https://example.com a un'app Android com.example.android, ecco tre passaggi obbligatori:

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 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. Puoi trovare ulteriori dettagli nella documentazione relativa ai link per app Android.

Nell'app 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 escape da 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 della tua app e del tuo sito web, leggi la documentazione relativa a SmartLock for Passwords on Android.