Credential Manager - Holder API, Android uygulamalarının dijital kimlik bilgilerini doğrulayıcılara yönetmesine ve sunmasına olanak tanır.
Başlayın
Credential Manager - Holder API'yi kullanmak için aşağıdaki bağımlılıkları uygulama modülünüzün derleme komut dosyasına ekleyin:
// 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-alpha02"
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" }
Kimlik bilgilerini Kimlik Bilgisi Yöneticisi'ne kaydetme
Cüzdanın, kimlik bilgisi meta verilerini kaydetmesi gerekir. Böylece, istek geldiğinde Kimlik Bilgisi Yöneticisi bunları filtreleyip kimlik bilgisi seçicide gösterebilir.
Kimlik Bilgisi Yöneticisi Seçici kullanıcı arayüzü
Bu meta verilerin biçimi RegisterCredentialsRequest içine aktarılır.
[RegistryManager][1] oluşturun ve kimlik bilgilerini kaydedin:
Bu örnekte, meta veriler kimlik bilgileri girişlerinin bulunduğu bir veritabanından derlenir. Uygulama yüklendiğinde meta verileri kaydeden örnek cüzdanımızda bir referans bulabilirsiniz. Gelecekte, kimlik bilgisi veritabanı oluşturma işlemi Jetpack API'si tarafından desteklenecektir. Bu noktada, kimlik bilgisi meta verilerini iyi tanımlanmış veri yapıları olarak kaydedebilirsiniz.
Kayıt, cihaz yeniden başlatıldığında da kalıcı olur. Aynı kimlik ve türdeki aynı kayıt defterinin yeniden kaydedilmesi, önceki kayıt defteri kaydının üzerine yazar. Bu nedenle, yalnızca kimlik bilgisi verileriniz değiştiğinde yeniden kaydolun.
İsteğe bağlı: Eşleştirici oluşturma
Kimlik bilgisi yöneticisi protokolden bağımsızdır. Meta veri kayıt defterini opak bir blob olarak ele alır ve içeriğini doğrulamaz veya kontrol etmez. Bu nedenle, cüzdanın bir eşleştirici sağlaması gerekir. Eşleştirici, cüzdanın kendi verilerini işleyebilen ve gelen bir isteğe göre yayınlanan içerik meta verilerini oluşturabilen çalıştırılabilir bir ikilidir. Kimlik bilgisi yöneticisi, kullanıcıya kullanıcı arayüzü oluşturulmadan önce cüzdana hiçbir şeyin sızmaması için eşleştiriciyi ağ veya disk erişimi olmadan bir sanal ortamda çalıştırır.
Kimlik Bilgisi Yöneticisi API'si, günümüzde OpenID4VP olan popüler protokoller için eşleştiriciler sağlar. Henüz resmi olarak yayınlanmadığı için şimdilik OpenID4VP protokolü için örnek eşleştiricimizi kullanın.
Seçili bir kimlik bilgisini kullanma
Ardından, cüzdanın kullanıcı tarafından bir kimlik bilgisi seçildiğinde ne yapması gerektiğini belirlemesi gerekir. androidx.credentials.registry.provider.action.GET_CREDENTIAL intent filtresini dinleyen bir etkinlik tanımlayabilirsiniz.
Örnek cüzdanımızda bu prosedür gösterilmektedir.
Etkinliği başlatan amaç, doğrulayıcı isteğini ve çağırma kaynağını içerir. Bu bilgileri PendingIntentHandler.retrieveProviderGetCredentialRequest işleviyle çıkarabilirsiniz. API, doğrulayıcı isteğiyle ilişkili tüm bilgileri içeren bir ProviderGetCredentialRequest döndürür. Üç temel bileşen vardır:
- İsteği gönderen uygulama. Bu bilgiyi
getCallingAppInfoile alabilirsiniz. - Seçilen kimlik bilgisi. Kullanıcının hangi adayı seçtiği hakkında
selectedEntryIduzantı yöntemi aracılığıyla bilgi edinebilirsiniz. Bu yöntem, kaydettiğiniz kimlik bilgisi kimliğiyle eşleşir. - Doğrulayıcının yaptığı özel istekler. Bu değeri
getCredentialOptionsyönteminden alabilirsiniz. Bu durumda, bu listede Dijital Kimlik Bilgileri isteğini içeren birGetDigitalCredentialOptionbulabilirsiniz.
Doğrulayan taraf, en yaygın olarak dijital kimlik bilgisi sunma isteğinde bulunur. Bu isteği aşağıdaki örnek kodla işleyebilirsiniz:
request.credentialOptions.forEach { option ->
if (option is GetDigitalCredentialOption) {
Log.i(TAG, "Got DC request: ${option.requestJson}")
processRequest(option.requestJson)
}
}
Bunun bir örneğini örnek cüzdanımızda görebilirsiniz.
Cüzdan kullanıcı arayüzünü oluşturma
Kimlik bilgisi seçildikten sonra cüzdan çağrılır ve kullanıcı, cüzdanın kullanıcı arayüzünde yönlendirilir. Örnekte bu, biyometrik istem olarak adlandırılır.
Kimlik bilgisi yanıtını döndürme
Cüzdan sonucu geri göndermeye hazır olduğunda, kimlik bilgisi yanıtıyla etkinliği tamamlayarak bunu yapabilirsiniz:
PendingIntentHandler.setGetCredentialResponse(
resultData,
GetCredentialResponse(DigitalCredential(response.responseJson))
)
setResult(RESULT_OK, resultData)
finish()
Bir istisna varsa benzer şekilde kimlik bilgisi istisnası da gönderebilirsiniz:
PendingIntentHandler.setGetCredentialException(
resultData,
GetCredentialUnknownException() // Configure the proper exception
)
setResult(RESULT_OK, resultData)
finish()
Bağlam içinde kimlik bilgisi yanıtının nasıl döndürüleceğine dair bir örnek için örnek uygulamaya bakın.