Trình quản lý thông tin xác thực – API chủ sở hữu

API Trình quản lý thông tin xác thực – Chủ sở hữu 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 trình xác minh.

Bắt đầu

Để sử dụng API Trình quản lý thông tin xác thực – Chủ sở hữu, 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 xác thực 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 xác thực để Trình quản lý thông tin xác thực có thể lọc và hiển thị các thông tin đó trong bộ chọn thông tin xác thực khi có yêu cầu.

Hình ảnh cho thấy giao diện người dùng thông tin xác thực kỹ thuật số trong Trình quản lý thông tin xác thực
Hình 1. Giao diện người dùng thông tin xác thực kỹ thuật số.

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 RegisterCredentialsRequest. Tạo [RegistryManager][1] và đăng ký thông tin xác thực:

Trong ví dụ này, siêu dữ liệu được biên dịch từ cơ sở dữ liệu của các mục thông tin xác thực. Bạn có thể tìm thấy thông tin tham khảo 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, Jetpack API 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ó thể đăng ký siêu dữ liệu thông tin xác thực dưới dạng cấu trúc dữ liệu được xác định rõ ràng.

Nhật 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ủa cùng một 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 xác thực của mình thay đổi.

Không bắt buộc: Tạo trình so khớp

Trình quản lý thông tin xác thực là giao thức đối kháng; trình quản lý này coi sổ đăng ký siêu dữ liệu là một khối 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 trình so khớp, một tệp nhị phân có thể chạy có thể xử lý dữ liệu của riêng ví và tạo siêu dữ liệu hiển thị dựa trên yêu cầu sắp tới. Trình quản lý thông tin xác thực 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 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 trình so khớp cho các giao thức phổ biến, hiện tại là OpenID4VP. Giao thứ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 v24.

Xử lý thông tin xác thực đã 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í mẫu 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 của Trình xác minh và nguồn gốc gọi. Bạn có thể trích xuất bằng hàm PendingIntentHandler.retrieveProviderGetCredentialRequest. API trả về một ProviderGetCredentialRequest chứa tất cả thông tin liên kết với yêu cầu xác minh nhất định. Có ba 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 xác thực đã chọn. Bạn có thể nhận thông tin về đề xuất mà người dùng đã chọn thông qua phương thức tiện ích selectedEntryId; thông tin này sẽ khớp với mã thông tin mà bạn đã đăng ký.
  • Mọi yêu cầu cụ thể mà trình 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ột GetDigitalCredentialOption trong danh sách này, chứa yêu cầu về Thông tin xác thực điện tử.

Thông thường, trình xác minh sẽ tạo một yêu cầu hiển thị thông tin xác thực kỹ thuật số để bạn có thể xử lý yêu cầu đó bằng 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.

Kết xuất giao diện người dùng của ví

Sau khi chọn thông tin xác thực, ví sẽ được gọi và người dùng sẽ được đưa đến 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

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 bằng 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ó ngoại lệ, bạn có thể gửi ngoại lệ về thông tin xác thực theo cách tương tự:

PendingIntentHandler.setGetCredentialException(
    resultData,
    GetCredentialUnknownException() // Configure the proper exception
)
setResult(RESULT_OK, resultData)
finish()

Tham khảo ứng dụng mẫu để biết ví dụ về cách trả về phản hồi thông tin xác thực theo bối cảnh.