FIDO2 API untuk Android

FIDO2 API memungkinkan aplikasi Android membuat dan menggunakan kredensial berbasis kunci publik yang kuat dan kuat, untuk tujuan autentikasi pengguna. API ini menyediakan implementasi Klien WebAuthn, yang mendukung penggunaan pengautentikasi roaming BLE, NFC, dan USB (kunci keamanan) serta pengautentikasi platform, yang memungkinkan pengguna untuk mengautentikasi menggunakan sidik jari atau kunci layar mereka.

Integrasi

Titik masuk FIDO2 API adalah Fido2ApiClient.

API ini mendukung dua operasi:

  • Pendaftaran dilakukan sekali per pengautentikasi per akun, saat pengguna mengaitkan pengautentikasi dengan akun.
  • Penandatanganan dilakukan setiap kali pihak tepercaya ingin mengautentikasi pengguna.

Pendaftaran dan penandatanganan memerlukan interaksi pengguna.

Aplikasi contoh yang menunjukkan penggunaan API dapat ditemukan di https://github.com/android/security-samples/tree/master/Fido.

Interoperabilitas dengan situs Anda

Sangat mudah untuk mengizinkan pengguna berbagi kredensial dengan lancar di seluruh situs dan aplikasi Android Anda. Untuk melakukannya, manfaatkan Digital Asset Links. Anda dapat mendeklarasikan pengaitan dengan menghosting file JSON Digital Asset Links pada situs, dan menambahkan link ke file Digital Asset Link ke manifes aplikasi.

Misalnya, jika Anda ingin mengaitkan https://example.com dengan aplikasi Android com.example.android, berikut 3 langkah yang diperlukan:

Langkah 1. Menghosting assetlinks.json di domain Anda

Buat file JSON seperti ini dan hosting file tersebut di 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"
      ]
    }
  }
]

Pastikan situs tersebut dapat di-crawl dari Google dan ditayangkan dengan header HTTP Content-Type: application/json.

sha256_cert_fingerprints adalah sidik jari SHA256 dari sertifikat penandatanganan aplikasi Anda. Temukan detail selengkapnya di dokumentasi Link Aplikasi Android.

Di aplikasi Android, tambahkan baris berikut ke file manifes di bawah <application>:

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

Langkah 3. Tambahkan resource string asset_statements ke file strings.xml

String asset_statements adalah objek JSON yang menentukan file assetlinks.json yang akan dimuat. Anda harus meng-escape apostrof dan tanda kutip yang digunakan dalam string. Contoh:

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

Untuk mempelajari cara mengaitkan aplikasi dan situs Anda lebih lanjut, baca dokumentasi SmartLock untuk Sandi di Android.