Trực tuyến
Bạn có thể chấp nhận giấy tờ tuỳ thân điện tử trong cả quy trình trong ứng dụng và trên web. Để chấp nhận thông tin xác thực từ Google Wallet, bạn cần:
- Tích hợp bằng ứng dụng hoặc web theo hướng dẫn được cung cấp và
- Điền vào biểu mẫu này để yêu cầu và đồng ý với điều khoản dịch vụ về việc chấp nhận thông tin xác thực từ Google Wallet.
Điều kiện tiên quyết
Để kiểm thử việc hiển thị giấy tờ tuỳ thân, trước tiên, bạn phải đăng ký tham gia chương trình beta công khai bằng tài khoản thử nghiệm dự kiến. Sau đó, hãy cung cấp thông tin chi tiết tiếp theo cho người liên hệ được chỉ định của Google.
- Đường liên kết đến Điều khoản dịch vụ
- Biểu trưng
- Trang web
- Mã gói trên Cửa hàng Play (dành cho các hoạt động tích hợp ứng dụng Android)
- Mã nhận dạng Gmail dùng để tham gia chương trình thử nghiệm beta công khai
Định dạng thông tin xác thực được hỗ trợ
Hiện có một số tiêu chuẩn được đề xuất nhằm xác định định dạng dữ liệu của tài liệu nhận dạng kỹ thuật số, với hai tiêu chuẩn ngày càng thu hút đáng kể trong ngành:
- mdocs – do ISO xác định.
- Thông tin xác thực có thể xác minh của W3C – do W3C xác định.
Mặc dù Trình quản lý thông tin xác thực của Android hỗ trợ cả hai định dạng, nhưng Google Wallet hiện chỉ hỗ trợ Thẻ căn cước điện tử dựa trên mdoc.
Trải nghiệm người dùng
Khi một ứng dụng yêu cầu các thuộc tính danh tính, quy trình sau đây sẽ diễn ra:
Khám phá thông tin xác thực: Ứng dụng truy vấn các ví có sẵn để xác định thông tin xác thực có thể đáp ứng yêu cầu. Sau đó, Android sẽ hiển thị một bộ chọn giao diện người dùng hệ thống, cho thấy thông tin cần chia sẻ. Điều này giúp người dùng đưa ra quyết định sáng suốt về việc nên sử dụng thông tin đăng nhập nào.
Lựa chọn của người dùng và tương tác với ví: Người dùng chọn một thông tin xác thực và Android sẽ gọi ứng dụng ví tương ứng để hoàn tất giao dịch. Ứng dụng ví có thể hiển thị màn hình yêu cầu đồng ý riêng hoặc yêu cầu xác nhận bằng sinh trắc học.
Kết quả: Nếu người dùng đồng ý, thông tin xác thực danh tính đã chọn sẽ được chia sẻ với ứng dụng yêu cầu. Nếu người dùng từ chối, hệ thống sẽ trả về một lỗi.
Trong ứng dụng
Để yêu cầu thông tin xác thực danh tính từ ứng dụng Android, hãy làm theo các bước sau:
Cập nhật phần phụ thuộc
Trong build.gradle của dự án, hãy cập nhật các phần phụ thuộc để sử dụng Trình quản lý thông tin xác thực (beta):
dependencies {
implementation("androidx.credentials:credentials:1.5.0-alpha05")
// optional - needed for credentials support from play services, for devices running Android 13 and below.
implementation("androidx.credentials:credentials-play-services-auth:1.5.0-alpha05")
}
Định cấu hình Trình quản lý thông tin xác thực
Để định cấu hình và khởi tạo đối tượng CredentialManager
, hãy thêm logic tương tự như sau:
// Use your app or activity context to instantiate a client instance of CredentialManager.
val credentialManager = IdentityCredentialManager.Companion.getClient(context)
Yêu cầu thuộc tính nhận dạng
// Retrieves the user's digital identites from wallet apps for your app.
val getIdentityCredentialOption = GetDigitalCredentialOption(
requestJson = requestJson, // this is what partners needs to set, example JSON specified below
)
val result = credentialManager.getCredential(request = GetCredentialRequest(credentialOptions, ...)
Phương thức gọi ứng dụng cung cấp tất cả các tham số IdentityRequest dưới dạng chuỗi JSON. Ở đây, thông tin này được biểu thị dưới dạng tham số requestMatcher
của CredentialOption. Trình quản lý thông tin xác thực không quan tâm đến nội dung của tệp json đó. Yêu cầu json này sẽ được chuyển trực tiếp đến ví, sau đó ví sẽ chịu trách nhiệm phân tích cú pháp và quyết định thông tin xác thực nào có thể thực hiện yêu cầu. Bạn có thể xem toàn bộ quá trình triển khai trong ứng dụng mẫu.
Chúng tôi dự kiến W3C sẽ xác định yêu cầu JSON này là một thành phần của API web. Việc chuẩn hoá này sẽ cho phép trình duyệt truyền trực tiếp yêu cầu đến Android.
Để cung cấp thông tin về nội dung của yêu cầu đó, sau đây là mẫu yêu cầu mdoc:
{
"selector": {
"format": [
"mdoc"
],
"doctype": "org.iso.18013.5.1.mDL",
"fields": [
{
"namespace": "org.iso.18013.5.1",
"name": "family_name",
"intentToRetain": false
},
{
"namespace": "org.iso.18013.5.1",
"name": "given_name",
"intentToRetain": false
},
{
"namespace": "org.iso.18013.5.1",
"name": "age_over_21",
"intentToRetain": false
}
]
},
"nonce": "3cydsUF9xNFyBDAAWOct09hEeSqrFX2WB2r0G6f8Ol0=",
"readerPublicKey": "BApmGdElal2-1dtafsdHVRa1EpAWZfhlQj_iof2I8L3V8_dCK1gVR0_12E4ZSQ2LcqXRd4zxVeKEqU1wUSgGWUU="
}
Phản hồi sẽ trả về một identityToken (chuỗi JSON) do W3C xác định. Ứng dụng Wallet chịu trách nhiệm tạo phản hồi này.
Ví dụ:
{
"token": "<base64 encoded response>"
}
Gửi mã thông báo và xử lý trên máy chủ
Sau khi nhận được identityToken, ứng dụng của bạn sẽ truyền mã này đến máy chủ ứng dụng để xác minh. Bước đầu tiên là giải mã mã thông báo từ định dạng base64. Mảng byte thu được đại diện cho dữ liệu CBOR, tuân thủ CDDL sau đây.
CredentialDocument = {
"version": tstr, // Set to "ANDROID-HPKE-v1"
"pkEm": bstr, // Public key, in uncompressed form
"cipherText": bstr // The encrypted data
}
Bước tiếp theo là tính toán SessionTranscript từ tiêu chuẩn ISO/IEC 18013-5:2021 với cấu trúc Chuyển đổi dành riêng cho Android:
SessionTranscript = [
null, // DeviceEngagementBytes not available
null, // EReaderKeyBytes not available
AndroidHandover // Defined below
]
AndroidHandover = [
"AndroidHandoverv1", // Version number
nonce, // nonce that comes from request
appId, // RP package name
pkRHash, // The SHA256 hash of the recipient public key
]
cipherText được mã hoá bằng mã hoá HPKE. Để giải mã, hãy sử dụng SessionTranscript làm Dữ liệu đã xác thực bổ sung, cùng với khoá riêng tư EC đã tạo trước đó và các chế độ cài đặt sau:
- KEM: DHKEM(P-256, HKDF-SHA256)
- KDF: HKDF-SHA256
- AEAD: AES-128-GCM
Văn bản thô thu được là các byte CBOR của DeviceResponse theo quy định trong ISO/IEC 18013-5:2021. DeviceResponse phải được xác thực theo điều khoản 9 của tiêu chuẩn ISO/IEC 18013-5:2021. Quy trình này bao gồm một số bước, chẳng hạn như xác minh rằng mdoc bắt nguồn từ một tổ chức phát hành đáng tin cậy và phản hồi được ký bởi thiết bị dự định. Bạn có thể sử dụng lớp DeviceResponseParser từ dự án Thông tin xác thực danh tính của OpenWallet Foundation trong một phần của quy trình xác thực này.
Web
Để yêu cầu Thông tin xác thực danh tính bằng API Thông tin xác thực kỹ thuật số trên Chrome, bạn cần đăng ký bản dùng thử theo nguyên gốc của Digital Credentials API.
Giao lưu trực tiếp
Để chấp nhận giấy tờ tuỳ thân qua Google Wallet, bạn cần làm theo các bước sau:
- Tạo hoặc mua đầu đọc để chấp nhận giấy tờ tuỳ thân theo định nghĩa của ISO 18013-5
- Tải chứng chỉ IACA vào đầu đọc để đảm bảo giấy tờ tuỳ thân được chấp nhận là chính xác
- Kiểm thử giải pháp
- Đăng ký ứng dụng của bạn với Google Wallet
Tạo hoặc mua đầu đọc để chấp nhận giấy tờ tuỳ thân theo định nghĩa của ISO 18013-5
Giấy tờ tuỳ thân trong Wallet được triển khai theo tiêu chuẩn ISO 18013-5 đối với giấy phép lái xe di động. Các công cụ này sử dụng tính năng tương tác bằng mã QR hoặc dựa trên NFC cùng với BLE làm cơ chế truyền dữ liệu. Vì vậy, mọi thiết bị có thể triển khai các khía cạnh đó của tiêu chuẩn đều có thể hoạt động như một trình đọc, ngay cả ứng dụng di động. Vì tiêu chuẩn này mở nên có một số phương pháp triển khai của bên thứ ba trên thị trường. Ngoài ra, bạn có thể triển khai chức năng này trực tiếp nếu cần.
Để xem hướng dẫn về cách tự triển khai chức năng này, hãy xem ứng dụng Android của trình đọc mã nguồn mở của chúng tôi. Ứng dụng này triển khai tiêu chuẩn ISO và có thể chấp nhận các mDL từ Google Wallet.
Bạn có thể bắt đầu bằng cách tạo và chạy ứng dụng trình đọc tài liệu tham khảo:
- Sao chép kho lưu trữ ứng dụng tham chiếu
- Mở dự án trên Android Studio
- Tạo và chạy mục tiêu
appverifier
trên thiết bị Android hoặc trình mô phỏng.
Tải chứng chỉ IACA vào trình đọc để đảm bảo các mã nhận dạng được chấp nhận là xác thực
Để xác thực một thông tin đăng nhập thực, bạn phải có giấy tờ tuỳ thân trong ví của một tổ chức phát hành được hỗ trợ. Dưới đây là danh sách các tổ chức phát hành được Google Wallet hỗ trợ cùng với đường liên kết đến chứng chỉ của họ để xác minh.
Kiểm thử giải pháp
Để kiểm thử giải pháp của bạn, hãy tạo và chạy ứng dụng Android của phần tử giữ tham chiếu nguồn mở. Sau đây là các bước để tạo và chạy ứng dụng trình giữ tham chiếu:
- Sao chép kho lưu trữ ứng dụng tham chiếu
- Mở dự án trên Android Studio
- Tạo và chạy mục tiêu
appholder
trên thiết bị Android hoặc trình mô phỏng.
(Không bắt buộc) Đăng ký ứng dụng của bạn với Google Wallet
Đăng ký ứng dụng của bạn với Google Wallet bằng cách điền vào biểu mẫu này.