API FIDO2 dành cho Android

API FIDO2 cho phép các ứng dụng Android tạo và sử dụng thông tin xác thực mạnh mẽ, dựa trên khoá công khai, đã được chứng thực cho mục đích xác thực người dùng. API này cung cấp quy trình triển khai Ứng dụng WebAuthn, hỗ trợ việc sử dụng trình xác thực BLE, NFC và chuyển vùng USB (khoá bảo mật) cũng như trình xác thực nền tảng, cho phép người dùng xác thực bằng vân tay hoặc phương thức khoá màn hình.

Tích hợp

Điểm truy cập API FIDO2Fido2ApiClient.

API hỗ trợ hai thao tác:

  • Đăng ký được thực hiện một lần cho mỗi trình xác thực đối với mỗi tài khoản, khi người dùng liên kết trình xác thực với một tài khoản.
  • Quá trình được thực hiện bất cứ khi nào bên đáng tin cậy muốn xác thực người dùng.

Cả quá trình đăng ký và ký đều yêu cầu người dùng tương tác.

Bạn có thể tìm thấy ứng dụng mẫu minh hoạ việc sử dụng API tại https://github.com/android/identity-samples/tree/main/Fido2.

Khả năng tương tác với trang web

Thật đơn giản để cho phép người dùng chia sẻ thông tin đăng nhập trên trang web và ứng dụng Android của bạn một cách đơn giản. Để thực hiện việc này, hãy tận dụng Đường liên kết đến tài sản kỹ thuật số. Bạn có thể khai báo mối liên kết bằng cách lưu trữ tệp JSON chứa Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) trên trang web của mình và thêm đường liên kết đến tệp Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) vào tệp kê khai của ứng dụng.

Ví dụ: nếu bạn muốn liên kết https://example.com với một ứng dụng Android com.example.android, sau đây là 3 bước bắt buộc:

Bước 1. Lưu trữ assetlinks.json tại miền của bạn

Tạo một tệp JSON như thế này và lưu trữ tại 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"
      ]
    }
  }
]

Đảm bảo trang này có thể thu thập dữ liệu từ Google và được phân phát với tiêu đề HTTP Content-Type: application/json.

sha256_cert_fingerprints là vân tay số SHA256 của chứng chỉ ký của ứng dụng. Tìm thêm thông tin chi tiết trong tài liệu về Đường liên kết trong ứng dụng Android.

Trong ứng dụng Android, hãy thêm dòng sau vào tệp kê khai trong <application>:

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

Bước 3. Thêm một tài nguyên chuỗi asset_statements vào tệp strings.xml

Chuỗi asset_statements là một đối tượng JSON chỉ định các tệp assetlinks.json cần tải. Bạn phải thoát mọi dấu nháy đơn và dấu ngoặc kép mà bạn dùng trong chuỗi. Ví dụ:

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

Để tìm hiểu thêm về cách liên kết ứng dụng và trang web của bạn, hãy đọc tài liệu về SmartLock cho Mật khẩu trên Android.