- एचटीटीपी अनुरोध
- अनुरोध का मुख्य हिस्सा
- जवाब का मुख्य हिस्सा
- AuthKey
- ProofOfProvisioning
- MobileSecurityObject
क्रेडेंशियल उपलब्ध कराने के लिए एंडपॉइंट.
एचटीटीपी अनुरोध
POST https://example.issuer.com/api/v1/vdc/provisionMobileSecurityObjects
अनुरोध का मुख्य भाग
अनुरोध के मुख्य हिस्से में, इस स्ट्रक्चर का डेटा शामिल होता है:
| JSON के काेड में दिखाना |
|---|
{ "requestMetadata": { object ( |
| फ़ील्ड | |
|---|---|
requestMetadata |
ज़रूरी है. अनुरोध के बारे में मेटाडेटा. यह सभी अनुरोधों में ज़रूरी होता है. |
deviceReferenceId |
ज़रूरी है. यह आईडी, डिवाइस और उससे जुड़ी आइडेंटिटी कुंजी से मेल खाता है. यह डिवाइस आईडी नहीं है. इसका मतलब है कि अगर उपयोगकर्ता के पास एक ही डिवाइस पर दो अलग-अलग क्रेडेंशियल हैं, तो यह आईडी दोनों के लिए अलग-अलग होगा. यह आईडी सभी अनुरोधों में दिया जाता है. इसका इस्तेमाल अनुरोधों को आपस में जोड़ने के लिए किया जा सकता है. |
credentialId |
ज़रूरी है. यह एक ओपेक आइडेंटिफ़ायर है. यह किसी डिवाइस को उपलब्ध कराए गए क्रेडेंशियल को दिखाता है. उदाहरण: यूयूआईडी |
authKeys[] |
ज़रूरी है. x509 सर्टिफ़िकेट की सूची, जिनकी पुष्टि की जानी है, ताकि उन्हें मोबाइल सुरक्षा ऑब्जेक्ट के तौर पर इस्तेमाल किया जा सके. हर सर्टिफ़िकेट पर, डिवाइस क्रेडेंशियल कुंजी से हस्ताक्षर किया जाता है. |
proofOfProvisioning |
ज़रूरी है. डिवाइस से मिला कोई ऑब्जेक्ट, जिससे यह साबित होता हो कि क्रेडेंशियल को सही तरीके से उपलब्ध कराया गया था. इसके स्ट्रक्चर के बारे में ज़्यादा जानने के लिए, ऑब्जेक्ट की परिभाषा देखें. ध्यान दें: यह ऑब्जेक्ट सिर्फ़ तब दिया जाता है, जब क्रेडेंशियल उपलब्ध कराने के बाद पहली बार मोबाइल सुरक्षा ऑब्जेक्ट उपलब्ध कराए जाते हैं. एमएसओ को रीफ़्रेश करने के लिए इस तरीके का इस्तेमाल करने पर, यह जानकारी नहीं दी जाएगी. |
deviceEncryptionKey |
ज़रूरी है. यह एक ऐसा ऑब्जेक्ट होता है जिसमें डिवाइस की कुछ समय के लिए इस्तेमाल की जाने वाली एन्क्रिप्शन कुंजी और उससे जुड़ा मेटाडेटा होता है. इस कुकी का इस्तेमाल, वैल्यू को वापस डिवाइस पर एन्क्रिप्ट (सुरक्षित) करने के लिए किया जाता है. ऐसा हो सकता है कि यह ऑब्जेक्ट, ऑनबोर्डिंग के दौरान सैंडबॉक्स एनवायरमेंट में उपलब्ध न हो. इसका मतलब है कि जारी करने वाले को सादा टेक्स्ट वाला डेटा वापस भेजना चाहिए. इसे हमेशा प्रोडक्शन एनवायरमेंट में सेट किया जाना चाहिए. |
credentialVersionId |
ज़रूरी है. क्रेडेंशियल का वह वर्शन आईडी जो डिवाइस के पास फ़िलहाल है. इसका इस्तेमाल, क्रेडेंशियल के पुराने वर्शन के लिए मोबाइल सुरक्षा ऑब्जेक्ट उपलब्ध कराने के लिए नहीं किया जाना चाहिए. अगर यह, जारी करने वाले के रिकॉर्ड में दिए गए सबसे नए वर्शन से मेल नहीं खाता है, तो InvalidState के साथ ErrorResponse को वापस कर दिया जाना चाहिए. |
जवाब का मुख्य भाग
ऐसा जवाब जिसमें मोबाइल सुरक्षा ऑब्जेक्ट उपलब्ध कराने का नतीजा शामिल हो.
अगर एपीआई सही से जुड़ जाता है, ताे जवाब के मुख्य भाग में नीचे दिए गए स्ट्रक्चर शामिल होता है.
| JSON फ़ॉर्मैट में दिखाया गया है |
|---|
{ "responseMetadata": { object ( |
| फ़ील्ड | |
|---|---|
responseMetadata |
ज़रूरी है. जवाब के बारे में मेटाडेटा. यह सभी जवाबों में ज़रूरी होता है. |
mobileSecurityObjects[] |
ज़रूरी है. तैयार MobileSecurityObjects की सूची. अगर फ़िलहाल कोई MobileSecurityObjects तैयार नहीं है, तो यह सूची खाली हो सकती है. |
AuthKey
डिवाइस क्रेडेंशियल कुंजी से साइन किया गया x509 सर्टिफ़िकेट, जिसे जारी करने वाले व्यक्ति को प्रमाणित करना है.
इन्हें Android Identity Credential API से Wallet ऐक्सेस करता है. इनके बारे में ज़्यादा जानकारी https://developer.android.com/reference/android/security/identity/IdentityCredential#getAuthKeysNeedingCertification() पर उपलब्ध है
| JSON के काेड में दिखाना |
|---|
{ // Union field |
| फ़ील्ड | |
|---|---|
यूनियन फ़ील्ड presencetype. ज़रूरी है. यह एक oneof है, जिससे पता चलता है कि AuthKey को कैसे दिखाया जा रहा है. presencetype इनमें से सिर्फ़ एक हो सकता है: |
|
encryptedData |
एन्क्रिप्ट की गई वैल्यू और एन्क्रिप्शन मेटाडेटा, ताकि वैल्यू को डिक्रिप्ट किया जा सके. |
unencryptedValue |
AuthKey की base64 कोड में बदली गई वैल्यू. |
ProofOfProvisioning
यह COSE_Sign1 स्ट्रक्चर्ड होता है. इस पर डिवाइस क्रेडेंशियल कुंजी से हस्ताक्षर किया जाता है. इससे यह साबित होता है कि डिवाइस पर सुरक्षित स्टोरेज में, संबंधित क्रेडेंशियल को सही तरीके से प्रोविज़न किया गया था.
इस स्ट्रक्चर को Android Identity Credential API से तय किया जाता है. इसके बारे में ज़्यादा जानकारी https://developer.android.com/reference/android/security/identity/WritableIdentityCredential#personalize(android.security.identity.PersonalizationData) पर दी गई है
| JSON के काेड में दिखाना |
|---|
{ // Union field |
| फ़ील्ड | |
|---|---|
यूनियन फ़ील्ड presencetype. ज़रूरी है. यह एक oneof है, जिससे पता चलता है कि ProofOfProvisioning को कैसे दिखाया जा रहा है. presencetype इनमें से सिर्फ़ एक हो सकता है: |
|
encryptedData |
एन्क्रिप्ट की गई वैल्यू और एन्क्रिप्शन मेटाडेटा, ताकि वैल्यू को डिक्रिप्ट किया जा सके. |
unencryptedValue |
ProofOfProvisioning की base64 कोड में बदली गई वैल्यू. |
MobileSecurityObject
यह एक ऐसा ऑब्जेक्ट होता है जिसमें क्रेडेंशियल में शामिल हर डेटा एलिमेंट से कैलकुलेट किए गए डाइजेस्ट होते हैं. इसे स्टैटिक ऑथराइज़ेशन डेटा के तौर पर दिखाया जाता है. यह Android Identity Credential लाइब्रेरी के लिए ज़रूरी फ़ॉर्मैट है. स्टैटिक ऑथराइज़ेशन डेटा बनाने के बारे में ज़्यादा जानने के लिए, यह लेख पढ़ें.
| JSON के काेड में दिखाना |
|---|
{ "expirationTimeMillis": string, // Union field |
| फ़ील्ड | |
|---|---|
expirationTimeMillis |
यह टाइमस्टैंप, मोबाइल सुरक्षा ऑब्जेक्ट के खत्म होने की तारीख दिखाता है. टाइमस्टैंप को Unix epoch के बाद से मिलीसेकंड की संख्या के तौर पर दिखाया जाता है. |
यूनियन फ़ील्ड presencetype. ज़रूरी है. यह एक ऐसा विकल्प है जिससे पता चलता है कि क्रेडेंशियल कैसे दिखाया जा रहा है. presencetype इनमें से सिर्फ़ एक हो सकता है: |
|
encryptedData |
एन्क्रिप्ट की गई वैल्यू और एन्क्रिप्शन मेटाडेटा, ताकि वैल्यू को डिक्रिप्ट किया जा सके. |
unencryptedValue |
क्रेडेंशियल की base64 कोड में बदली गई वैल्यू. |