FIDO2 API na Androida

Interfejs FIDO2 API umożliwia aplikacjom na Androida tworzenie i używanie silnych, poświadczonych danych logowania na podstawie klucza publicznego na potrzeby uwierzytelniania użytkowników. Interfejs API udostępnia implementację klienta WebAuthn, która obsługuje stosowanie uwierzytelniania roamingowego (kluczy bezpieczeństwa) BLE, NFC i USB, a także uwierzytelniania platformy, które umożliwia użytkownikowi uwierzytelnienie za pomocą odcisku palca lub blokady ekranu.

Integracja

Punktem wejścia do interfejsu FIDO2 API jest Fido2ApiClient.

Interfejs API obsługuje 2 działania:

  • Rejestracja odbywa się raz na 1 aplikację uwierzytelniającą na 1 konto, gdy użytkownik powiąże aplikację uwierzytelniającą z kontem.
  • Podpisywanie odbywa się za każdym razem, gdy powierzający chce uwierzytelnić użytkownika.

Zarówno rejestracja, jak i podpisywanie wymagają działania ze strony użytkownika.

Przykładową aplikację demonstrującą korzystanie z interfejsu API znajdziesz na stronie https://github.com/android/identity-samples/tree/main/Fido2.

Interoperacyjność witryny

Możesz łatwo zezwolić użytkownikom na bezproblemowe udostępnianie danych logowania w Twojej witrynie i aplikacji na Androida. Aby to zrobić, skorzystaj z protokołu Digital Asset Links. Możesz deklarować powiązania, umieszczając plik JSON protokołu Digital Asset Links w swojej witrynie i dodając do pliku manifestu aplikacji link do pliku Digital Asset Link.

Jeśli na przykład chcesz powiązać https://example.com z aplikacją na Androida com.example.android, wykonaj te 3 czynności:

Krok 1. Hostowanie assetlinks.json w domenie

Utwórz plik JSON podobny do tego i umieść go na stronie 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"
      ]
    }
  }
]

Upewnij się, że strona jest indeksowana przez Google i udostępniana z nagłówkiem HTTPContent-Type: application/json.

sha256_cert_fingerprints to odcisk cyfrowy SHA-256 certyfikatu podpisywania aplikacji. Więcej informacji znajdziesz w dokumentacji Linków aplikacji na Androida.

W pliku manifestu aplikacji na Androida dodaj ten wiersz w sekcji <application>:

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

Krok 3. Dodawanie zasobu ciągu znaków asset_statements do pliku strings.xml

Ciąg znaków asset_statements to obiekt JSON, który określa assetlinks.jsonpliki do załadowania. Musisz zmienić znaczenie apostrofów i cudzysłów użytych w tym ciągu znaków. Na przykład:

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

Więcej informacji o łączeniu aplikacji i witryny znajdziesz w dokumentacji funkcji SmartLock na potrzeby haseł na Androida.