Online
Dijital kimlikler hem uygulama içi hem de web akışlarında kabul edilebilir. Google Cüzdan'daki kimlik bilgilerini kabul etmek için:
- Sağlanan talimatları uygulayarak uygulama veya web üzerinden entegre edin ve
- Google Cüzdan'dan kimlik bilgilerini kabul etme isteğinde bulunmak ve hizmet şartlarını kabul etmek için bu formu doldurun.
Ön koşullar
Kimliklerin sunumunu test etmek için önce amaçlanan test hesabını kullanarak herkese açık beta programına kaydolmanız gerekir. Ardından, aşağıdaki ayrıntıları atanan Google temsilcinize iletin.
- Hizmet Şartları bağlantısı
- Logo
- Web sitesi
- Play Store paket kimliği (Android uygulama entegrasyonları için)
- Herkese açık beta sürümüne katılmak için kullanılan Gmail kimliği
Desteklenen Kimlik Bilgisi Biçimleri
Dijital kimlik belgelerinin veri biçimini tanımlayan birkaç önerilen standart vardır. Bunlardan ikisi sektörde önemli bir ilgi görmektedir:
- mdocs - ISO tarafından tanımlanır.
- W3C Doğrulanabilir Kimlik Bilgileri: W3C tarafından tanımlanır.
Android Kimlik Bilgisi Yöneticisi her iki biçimi de destekler, ancak Google Cüzdan şu anda yalnızca mdoc tabanlı Dijital Kimlikleri desteklemektedir.
Kullanıcı deneyimi
Bir uygulama kimlik özellikleri istediğinde aşağıdaki işlem gerçekleşir:
Kimlik bilgisi bulma: Uygulama, isteği karşılayabilecek kimlik bilgilerini belirlemek için mevcut cüzdanları sorgular. Ardından Android, paylaşılacak bilgileri gösteren bir sistem kullanıcı arayüzü seçici sunar. Bu sayede kullanıcı, hangi kimlik bilgisini kullanacağı konusunda bilinçli bir karar verebilir.
Kullanıcı Seçimi ve Cüzdan Etkileşimi: Kullanıcı bir kimlik bilgisi seçer ve Android, işlemi tamamlamak için ilgili cüzdan uygulamasını çağırır. Cüzdan uygulaması kendi izin ekranını sunabilir veya biyometrik onay gerektirebilir.
Sonuç: Kullanıcı izin verirse seçilen kimlik kimlik bilgileri, istek gönderen uygulamayla paylaşılır. Kullanıcı reddederse bir hata döndürülür.
Uygulama İçi
Android uygulamalarınızdan kimlik bilgileri istemek için şu adımları uygulayın:
Bağımlılıkları güncelleme
Projenizin build.gradle dosyasında, Kimlik Bilgisi Yöneticisi'ni (beta) kullanacak şekilde bağımlılıkları güncelleyin:
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")
}
Kimlik Bilgisi Yöneticisi'ni yapılandırma
Bir CredentialManager
nesnesini yapılandırmak ve başlatmak için aşağıdakine benzer bir mantık ekleyin:
// Use your app or activity context to instantiate a client instance of CredentialManager.
val credentialManager = IdentityCredentialManager.Companion.getClient(context)
Kimlik özellikleri isteğinde bulunma
// 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, ...)
Uygulamayı çağıran, tüm IdentityRequest parametrelerini JSON dizesi olarak sağlar. Burada, CredentialOption için requestMatcher
parametresi olarak gösterilmektedir. Kimlik Bilgisi Yöneticisi, bu JSON dosyasının içeriğiyle ilgilenmez. Bu json isteği doğrudan cüzdanlara iletilir. Cüzdanlar, isteği ayrıştırmaktan ve isteği hangi kimlik bilgilerinin karşılayabileceğine karar vermekten sorumludur. Uygulamanın tamamını örnek uygulamada bulabilirsiniz.
W3C'nin bu JSON isteğini web API'sinin bir bileşeni olarak tanımlamasını bekliyoruz. Bu standartlaştırma, tarayıcıların isteği doğrudan Android'e iletmesini sağlar.
Bu isteğin nasıl görünebileceğine dair fikir vermek için aşağıda bir mdoc isteği örneği verilmiştir:
{
"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="
}
Yanıt, W3C tarafından tanımlanan bir identityToken (json dizesi) döndürür. Bu yanıtın oluşturulmasından Cüzdan uygulaması sorumludur.
Örnek:
{
"token": "<base64 encoded response>"
}
Sunucuda jeton gönderme ve işleme
Uygulamanız, identityToken'ı aldıktan sonra doğrulama için uygulama sunucunuza iletmelidir. İlk adımda, base64 biçiminden jetonun kodunu çözmeyi içerir. Elde edilen bayt dizisi, aşağıdaki CDDL'ye uyan CBOR verilerini temsil eder.
CredentialDocument = {
"version": tstr, // Set to "ANDROID-HPKE-v1"
"pkEm": bstr, // Public key, in uncompressed form
"cipherText": bstr // The encrypted data
}
Bir sonraki adım, ISO/IEC 18013-5:2021 standardına ait SessionTranscript'ni Android'e özel bir Geçiş yapısıyla hesaplamaktır:
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, HPKE şifrelemesi kullanılarak şifrelenir. Şifrenin şifresini çözmek için daha önce oluşturulan EC özel anahtarı ve aşağıdaki ayarlarla birlikte, Kimlik Doğrulanmış Ek Veriler olarak SessionTranscript'i kullanın:
- KEM: DHKEM(P-256, HKDF-SHA256)
- KDF: HKDF-SHA256
- AEAD: AES-128-GCM
Elde edilen açık metin, ISO/IEC 18013-5:2021'de tanımlanan DeviceResponse CBOR baytlarıdır. DeviceResponse, ISO/IEC 18013-5:2021 madde 9'a göre doğrulanmalıdır. Bu işlem, mdoc belgesinin güvenilir bir yayıncıdan geldiğini ve yanıtın hedeflenen cihaz tarafından imzalandığını doğrulamak gibi birkaç adım içerir. Bu doğrulama sürecinin bir parçası için Openwallet Foundation Identity Credential projesindeki DeviceResponseParser sınıfı kullanılabilir.
Web
Chrome'da Digital Credentials API'yi kullanarak kimlik kimlik bilgilerini istemek için Digital Credentials API kaynak denemesine kaydolmanız gerekir.
Yüz Yüze
Google Cüzdan'dan kimlik kabul etmek için aşağıdaki adımları uygulamanız gerekir:
- ISO 18013-5'te tanımlanan kimlikleri kabul edecek bir okuyucu oluşturma veya edinme
- Kabul edilen kimliklerin gerçek olduğundan emin olmak için IACA sertifikalarını okuyucuya yükleyin
- Çözümünüzü test etme
- Uygulamanızı Google Cüzdan'a kaydetme
ISO 18013-5 ile tanımlanan kimlikleri kabul edecek bir okuyucu oluşturun veya edinin
Cüzdan'daki kimlikler, mobil sürücü belgeleri için ISO 18013-5 standardına göre uygulanır. Veri aktarım mekanizması olarak BDE ile birlikte NFC tabanlı veya QR kodu etkileşimi kullanırlar. Böylece standardın bu yönlerini uygulayabilen tüm cihazlar bir okuyucu, hatta mobil uygulama bile olabilir. Standart açık olduğu için piyasada çeşitli üçüncü taraf uygulamaları mevcuttur. Ayrıca, gerekirse işlevi doğrudan da uygulayabilirsiniz.
Bu işlevi kendiniz nasıl uygulayacağınızla ilgili bilgi edinmek için açık kaynak referans okuyucu Android uygulamamıza göz atın. Bu uygulama, ISO standardını uygular ve Google Cüzdan'dan mDL'leri kabul edebilir.
Referans okuyucu uygulamasını oluşturup çalıştırarak başlayabilirsiniz:
- Referans uygulama deposunu klonlayın
- Projeyi Android Studio'da açın
- Android cihazınızda veya emülatörünüzde
appverifier
hedefini derleyip çalıştırın.
Kabul edilen kimliklerin gerçek olduğundan emin olmak için okuyucuya IACA sertifikalarını yükleme
Gerçek kimlik bilgilerini doğrulamak için desteklenen bir sağlayıcıdan cüzdanınızda kimlik bilgisi bulundurmanız gerekir. Google Cüzdan tarafından desteklenen kartların listesini ve doğrulama için sertifikalarının bağlantılarını aşağıda bulabilirsiniz.
Çözümünüzü test etme
Çözümünüzü test etmek için açık kaynak referans tutucu Android uygulamamızı oluşturup çalıştırın. Referans tutucu uygulamasını oluşturmak ve çalıştırmak için şu adımları uygulayın:
- Referans uygulama deposunu klonlayın
- Projeyi Android Studio'da açın
- Android cihazınızda veya emülatörünüzde
appholder
hedefini derleyip çalıştırın.
(İsteğe bağlı) Uygulamanızı Google Cüzdan'a kaydetme
Bu formu doldurarak uygulamanızı Google Cüzdan'a kaydedin.