API Trình quản lý thông tin xác thực – Người nắm giữ cho phép các ứng dụng Android quản lý và trình bày thông tin xác thực kỹ thuật số cho người xác minh.
Bắt đầu
Để sử dụng Credential Manager – Holder API, hãy thêm các phần phụ thuộc sau vào tập lệnh bản dựng của mô-đun ứng dụng:
// In your app module's build.gradle:
dependencies {
implementation(libs.androidx.registry.provider)
implementation(libs.androidx.registry.provider.play.services)
}
// In libs.versions.toml:
registryDigitalCredentials = "1.0.0-alpha01"
androidx-registry-provider = { module = "androidx.credentials.registry:registry-provider", version.ref = "registryDigitalCredentials" }
androidx-registry-provider-play-services = { module = "androidx.credentials.registry:registry-provider-play-services", version.ref = "registryDigitalCredentials" }
Đăng ký thông tin đăng nhập bằng Trình quản lý thông tin xác thực
Ví cần đăng ký siêu dữ liệu thông tin đăng nhập để Trình quản lý thông tin đăng nhập có thể lọc và hiển thị thông tin đăng nhập trong bộ chọn thông tin đăng nhập khi có yêu cầu.

Giao diện người dùng của bộ chọn Trình quản lý thông tin xác thực
Định dạng cho siêu dữ liệu này được truyền vào một RegisterCredentialsRequest
.
Tạo một [RegistryManager][1]
và đăng ký thông tin đăng nhập:
Trong ví dụ này, siêu dữ liệu được biên dịch từ một cơ sở dữ liệu gồm các mục thông tin đăng nhập. Bạn có thể tìm thấy thông tin tham chiếu trong ví mẫu của chúng tôi. Thông tin này sẽ đăng ký siêu dữ liệu khi tải ứng dụng. Trong tương lai, API Jetpack sẽ hỗ trợ thành phần cơ sở dữ liệu thông tin xác thực. Tại thời điểm đó, bạn cũng có thể đăng ký siêu dữ liệu thông tin đăng nhập dưới dạng các cấu trúc dữ liệu được xác định rõ.
Sổ đăng ký vẫn tồn tại sau khi thiết bị khởi động lại. Việc đăng ký lại cùng một sổ đăng ký có cùng mã nhận dạng + loại sẽ ghi đè bản ghi sổ đăng ký trước đó. Do đó, bạn chỉ cần đăng ký lại khi dữ liệu thông tin đăng nhập của bạn thay đổi.
Không bắt buộc: Tạo một đối tượng so khớp
Trình quản lý thông tin xác thực không phụ thuộc vào giao thức; trình quản lý này coi sổ đăng ký siêu dữ liệu là một blob mờ và không xác minh hoặc kiểm tra nội dung của sổ đăng ký. Do đó, ví phải cung cấp một chương trình so khớp, một tệp nhị phân có thể thực thi để xử lý dữ liệu riêng của ví và tạo siêu dữ liệu hiển thị dựa trên một yêu cầu đến. Credential Manager sẽ chạy trình so khớp trong môi trường hộp cát mà không có quyền truy cập vào mạng hoặc ổ đĩa, để không có thông tin nào bị rò rỉ vào ví trước khi giao diện người dùng được hiển thị cho người dùng.
API Trình quản lý thông tin xác thực sẽ cung cấp các đối sánh cho các giao thức phổ biến, hiện tại là OpenID4VP. Công cụ này chưa được phát hành chính thức, vì vậy, hiện tại hãy sử dụng trình so khớp mẫu của chúng tôi cho giao thức OpenID4VP.
Xử lý thông tin đăng nhập đã chọn
Tiếp theo, ví cần xử lý khi người dùng chọn một thông tin xác thực. Bạn có thể xác định một Hoạt động theo dõi bộ lọc ý định androidx.credentials.registry.provider.action.GET_CREDENTIAL
.
Ví dụ về ví của chúng tôi minh hoạ quy trình này.
Ý định khởi chạy hoạt động sẽ chứa yêu cầu Trình xác minh và nguồn gốc gọi, có thể được trích xuất bằng hàm PendingIntentHandler.retrieveProviderGetCredentialRequest
. API này trả về một ProviderGetCredentialRequest
chứa tất cả thông tin liên quan đến yêu cầu của trình xác minh đã cho. Có 3 thành phần chính:
- Ứng dụng đã đưa ra yêu cầu. Bạn có thể truy xuất thông tin này bằng
getCallingAppInfo
. - Thông tin đăng nhập đã chọn. Bạn có thể nhận thông tin về ứng viên mà người dùng đã chọn thông qua phương thức mở rộng
selectedEntryId
; phương thức này sẽ khớp với mã nhận dạng thông tin đăng nhập mà bạn đã đăng ký. - Mọi yêu cầu cụ thể mà người xác minh đã đưa ra. Bạn có thể lấy thông tin này từ phương thức
getCredentialOptions
. Trong trường hợp này, bạn sẽ thấy mộtGetDigitalCredentialOption
trong danh sách này, chứa yêu cầu về Chứng chỉ số.
Thông thường, trình xác minh sẽ đưa ra yêu cầu trình bày thông tin đăng nhập kỹ thuật số để bạn có thể xử lý yêu cầu đó bằng đoạn mã mẫu sau:
request.credentialOptions.forEach { option ->
if (option is GetDigitalCredentialOption) {
Log.i(TAG, "Got DC request: ${option.requestJson}")
processRequest(option.requestJson)
}
}
Bạn có thể xem ví dụ về việc này trong ví mẫu của chúng tôi.
Hiển thị giao diện người dùng của ví
Sau khi người dùng chọn thông tin đăng nhập, ví sẽ được gọi và người dùng sẽ được chuyển qua giao diện người dùng của ví. Trong mẫu này, đây là một lời nhắc sinh trắc học.
Trả về phản hồi thông tin xác thực
Sau khi ví sẵn sàng gửi lại kết quả, bạn có thể thực hiện việc này bằng cách hoàn tất hoạt động với phản hồi thông tin xác thực:
PendingIntentHandler.setGetCredentialResponse(
resultData,
GetCredentialResponse(DigitalCredential(response.responseJson))
)
setResult(RESULT_OK, resultData)
finish()
Nếu có trường hợp ngoại lệ, bạn cũng có thể gửi thông tin ngoại lệ về thông tin đăng nhập:
PendingIntentHandler.setGetCredentialException(
resultData,
GetCredentialUnknownException() // Configure the proper exception
)
setResult(RESULT_OK, resultData)
finish()
Hãy tham khảo ứng dụng mẫu để xem ví dụ về cách trả về phản hồi về thông tin đăng nhập theo bối cảnh.