ऑनलाइन
डिजिटल आईडी को इन-ऐप्लिकेशन और वेब, दोनों फ़्लो में स्वीकार किया जा सकता है. Google Wallet से क्रेडेंशियल स्वीकार करने के लिए, आपको:
- दिए गए निर्देशों का पालन करके, ऐप्लिकेशन या वेब का इस्तेमाल करके इंटिग्रेट करें और
- Google Wallet से क्रेडेंशियल स्वीकार करने का अनुरोध करने और सेवा की शर्तों से सहमत होने के लिए, यह फ़ॉर्म भरें.
ज़रूरी शर्तें
आईडी के प्रज़ेंटेशन की जांच करने के लिए, आपको सबसे पहले टेस्ट के लिए इस्तेमाल किए जाने वाले खाते का इस्तेमाल करके, सार्वजनिक बीटा प्रोग्राम में रजिस्टर करना होगा. इसके बाद, अपने Google प्रतिनिधि को यह जानकारी दें.
- सेवा की शर्तों का लिंक
- लोगो
- वेबसाइट
- Play Store का पैकेज आईडी (Android ऐप्लिकेशन इंटिग्रेशन के लिए)
- वह Gmail आईडी जिसका इस्तेमाल सार्वजनिक बीटा वर्शन में शामिल होने के लिए किया गया था
क्रेडेंशियल के ऐसे फ़ॉर्मैट जिनका इस्तेमाल किया जा सकता है
डिजिटल पहचान दस्तावेज़ों के डेटा फ़ॉर्मैट के लिए, कई स्टैंडर्ड प्रस्तावित किए गए हैं. इनमें से दो स्टैंडर्ड, इंडस्ट्री में काफ़ी लोकप्रिय हैं:
- mdocs - ISO ने तय किया है.
- W3C पुष्टि करने लायक क्रेडेंशियल - W3C की ओर से तय किए गए.
Android Credential Manager, दोनों फ़ॉर्मैट के साथ काम करता है. हालांकि, फ़िलहाल Google Wallet में सिर्फ़ एमडीओसी वाले डिजिटल आईडी का इस्तेमाल किया जा सकता है.
उपयोगकर्ता अनुभव
जब कोई ऐप्लिकेशन पहचान से जुड़े एट्रिब्यूट का अनुरोध करता है, तो यह प्रोसेस होती है:
क्रेडेंशियल डिस्कवरी: ऐप्लिकेशन, अनुरोध पूरा करने वाले क्रेडेंशियल की पहचान करने के लिए, वॉलेट उपलब्ध करता है. इसके बाद, Android एक सिस्टम यूज़र इंटरफ़ेस सिलेक्टर दिखाता है, जिसमें शेयर की जाने वाली जानकारी दिखती है. इससे उपयोगकर्ता को यह तय करने में मदद मिलती है कि किस क्रेडेंशियल का इस्तेमाल करना है.
उपयोगकर्ता की ओर से चुना गया क्रेडेंशियल और Wallet ऐप्लिकेशन के साथ इंटरैक्शन: उपयोगकर्ता कोई क्रेडेंशियल चुनता है और Android, लेन-देन पूरा करने के लिए उससे जुड़े Wallet ऐप्लिकेशन को चालू करता है. Wallet ऐप्लिकेशन, सहमति लेने के लिए अपनी स्क्रीन दिखा सकता है या बायोमेट्रिक पुष्टि करने के लिए कह सकता है.
नतीजे: अगर उपयोगकर्ता सहमति देता है, तो पहचान के लिए चुने गए क्रेडेंशियल, अनुरोध करने वाले ऐप्लिकेशन के साथ शेयर किए जाते हैं. अगर उपयोगकर्ता अनुमति नहीं देता है, तो गड़बड़ी का मैसेज दिखता है.
ऐप्लिकेशन में
अपने Android ऐप्लिकेशन से पहचान की पुष्टि करने वाले क्रेडेंशियल का अनुरोध करने के लिए, यह तरीका अपनाएं:
डिपेंडेंसी अपडेट करें
अपने प्रोजेक्ट के build.gradle में, Credential Manager (बीटा वर्शन) का इस्तेमाल करने के लिए अपनी डिपेंडेंसी अपडेट करें:
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")
}
क्रेडेंशियल मैनेजर को कॉन्फ़िगर करना
CredentialManager
ऑब्जेक्ट को कॉन्फ़िगर और शुरू करने के लिए, यहां दिए गए लॉजिक के जैसे लॉजिक जोड़ें:
// Use your app or activity context to instantiate a client instance of CredentialManager.
val credentialManager = IdentityCredentialManager.Companion.getClient(context)
पहचान बताने वाले एट्रिब्यूट के लिए अनुरोध करना
// 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, ...)
ऐप्लिकेशन कॉलर, सभी IdentityRequest पैरामीटर को JSON स्ट्रिंग के तौर पर उपलब्ध कराता है. यहां इसे CredentialOption के requestMatcher
पैरामीटर के तौर पर दिखाया गया है. क्रेडेंशियल मैनेजर, उस JSON के कॉन्टेंट से कोई मतलब नहीं रखता. यह json अनुरोध सीधे वॉलेट को भेजा जाएगा. इसके बाद, वॉलेट इसे पार्स करने और यह तय करने के लिए ज़िम्मेदार होंगे कि अनुरोध को पूरा करने के लिए कौनसे क्रेडेंशियल इस्तेमाल किए जा सकते हैं. ऐप्लिकेशन के नमूने में, पूरी तरह लागू करने की प्रोसेस देखी जा सकती है.
हमारा अनुमान है कि W3C, इस JSON अनुरोध को वेब एपीआई के कॉम्पोनेंट के तौर पर जानकारी देगा. इस स्टैंडर्ड के बाद, ब्राउज़र सीधे Android को अनुरोध भेज पाएंगे.
यह अनुरोध कैसा दिख सकता है, इसका अंदाज़ा लगाने के लिए, यहां 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="
}
रिस्पॉन्स में, W3C की ओर से तय की गई identityToken (JSON स्ट्रिंग) दिखती है. इस जवाब को तैयार करने की ज़िम्मेदारी Wallet ऐप्लिकेशन की है.
उदाहरण:
{
"token": "<base64 encoded response>"
}
टोकन भेजना और सर्वर पर प्रोसेस करना
identityToken मिलने के बाद, आपके ऐप्लिकेशन को पुष्टि के लिए, उसे अपने ऐप्लिकेशन सर्वर पर भेजना चाहिए. पहले चरण में, टोकन को base64 फ़ॉर्मैट से डिकोड करना होता है. नतीजे के तौर पर मिलने वाला बाइट अरे, सीबीओआर डेटा को दिखाता है, जो इस सीडीएल का पालन करता है.
CredentialDocument = {
"version": tstr, // Set to "ANDROID-HPKE-v1"
"pkEm": bstr, // Public key, in uncompressed form
"cipherText": bstr // The encrypted data
}
अगला चरण, Android के हिसाब से हैंडओवर स्ट्रक्चर का इस्तेमाल करके, ISO/IEC 18013-5:2021 से SessionTranscript का हिसाब लगाना है:
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 एन्क्रिप्शन का इस्तेमाल करके एन्क्रिप्ट किया जाता है. इसे डिक्रिप्ट करने के लिए, अतिरिक्त पुष्टि किए गए डेटा के तौर पर SessionTranscript का इस्तेमाल करें. साथ ही, इससे पहले जनरेट की गई ईसी निजी कुंजी और इन सेटिंग का इस्तेमाल करें:
- KEM: DHKEM(P-256, HKDF-SHA256)
- केडीएफ़: HKDF-SHA256
- AEAD: AES-128-GCM
नतीजे के तौर पर, cleartext ISO/IEC 18013-5:2021 में बताए गए DeviceResponse CBOR बाइट का इस्तेमाल करता है. DeviceResponse की पुष्टि, ISO/IEC 18013-5:2021 के क्लॉज़ 9 के मुताबिक की जानी चाहिए. इसमें कई चरण शामिल होते हैं. जैसे, यह पुष्टि करना कि एमडीओसी, भरोसेमंद जारीकर्ता से मिला है और रिस्पॉन्स पर, टारगेट किए गए डिवाइस से हस्ताक्षर किया गया है. पुष्टि करने की इस प्रोसेस के कुछ हिस्से के लिए, OpenWallet Foundation के आइडेंटिटी क्रेडेंशियल प्रोजेक्ट की DeviceResponseParser क्लास का इस्तेमाल किया जा सकता है.
वेब
Chrome पर Digital Credentials API का इस्तेमाल करके, पहचान की पुष्टि करने वाले क्रेडेंशियल का अनुरोध करने के लिए, आपको Digital Credentials API के ऑरिजिन ट्रायल के लिए साइन अप करना होगा.
आमने-सामने
Google Wallet से आईडी स्वीकार करने के लिए, यह तरीका अपनाएं:
- आईएसओ 18013-5 के मुताबिक आईडी स्वीकार करने के लिए, रीडर बनाएं या खरीदें
- स्वीकार किए गए आईडी की पुष्टि करने के लिए, रीडर में IACA सर्टिफ़िकेट लोड करें
- अपने समाधान को टेस्ट करना
- Google Wallet में अपना ऐप्लिकेशन रजिस्टर करें
आईएसओ 18013-5 के मुताबिक आईडी स्वीकार करने के लिए, रीडर बनाएं या खरीदें
Wallet में आईडी, मोबाइल ड्राइविंग लाइसेंस के लिए ISO 18013-5 स्टैंडर्ड के मुताबिक लागू किए जाते हैं. ये डेटा ट्रांसफ़र के तरीके के तौर पर BLE के साथ एनएफ़सी पर आधारित या क्यूआर कोड की यूज़र ऐक्टिविटी का इस्तेमाल करते हैं. इसलिए, स्टैंडर्ड तौर पर ज़रूरी पहलू दिखाने वाला कोई भी डिवाइस, रीडर के तौर पर काम कर सकता है, यहां तक कि मोबाइल ऐप्लिकेशन भी. यह स्टैंडर्ड ओपन है, इसलिए मार्केट में तीसरे पक्ष के कई लागू करने वाले उपलब्ध हैं. साथ ही, ज़रूरत पड़ने पर, सीधे तौर पर भी यह सुविधा लागू की जा सकती है.
इस सुविधा को खुद लागू करने के तरीके के बारे में जानने के लिए, हमारे ओपन सोर्स रेफ़रंस रीडर Android ऐप्लिकेशन देखें. यह ऐप्लिकेशन, ISO स्टैंडर्ड को लागू करता है और Google Wallet से एमडीएल स्वीकार कर सकता है.
रेफ़रंस रीडर ऐप्लिकेशन बनाकर और उसे चलाकर, इस सुविधा का इस्तेमाल शुरू किया जा सकता है:
- रेफ़रंस ऐप्लिकेशन के रिपॉज़िटरी को क्लोन करना
- Android Studio पर प्रोजेक्ट खोलें
- अपने Android डिवाइस या एम्युलेटर पर
appverifier
टारगेट बनाएं और चलाएं.
स्वीकार किए गए आईडी की पुष्टि करने के लिए, रीडर में IACA सर्टिफ़िकेट लोड करें
किसी असली क्रेडेंशियल की पुष्टि करने के लिए, आपके पास वॉलेट में ऐसा आईडी होना चाहिए जिसे जारी करने वाली कंपनी ने इस सुविधा के लिए अनुमति दी हो. Google Wallet पर काम करने वाले कार्ड जारी करने वाली कंपनियों की सूची यहां दी गई है. साथ ही, पुष्टि करने के लिए उनके सर्टिफ़िकेट के लिंक भी दिए गए हैं.
समाधान की जांच करें
अपने समाधान की जांच करने के लिए, हमारे ओपन सोर्स रेफ़रंस होल्डर Android ऐप्लिकेशन बनाएं और चलाएं. रेफ़रंस होल्डर ऐप्लिकेशन बनाने और उसे चलाने का तरीका यहां बताया गया है:
- रेफ़रंस ऐप्लिकेशन के रिपॉज़िटरी को क्लोन करना
- Android Studio पर प्रोजेक्ट खोलें
- अपने Android डिवाइस या एमुलेटर पर
appholder
टारगेट बनाएं और चलाएं.
(ज़रूरी नहीं) Google Wallet पर अपना ऐप्लिकेशन रजिस्टर करना
यह फ़ॉर्म भरकर, Google Wallet के साथ अपना ऐप्लिकेशन रजिस्टर करें.