पिछले बदलाव की तारीख: 10 सितंबर, 2025
खास जानकारी
इस दस्तावेज़ में, मोबाइल और इंटरनेट सेवा देने वाली कंपनी को TS.43 फ़ोन नंबर की पुष्टि करने की सुविधा के ज़रिए, Firebase Phone Number Verification (FPNV) में शामिल करने के लिए ज़रूरी सभी चरणों के बारे में बताया गया है.
शब्दावली
शामिल पक्ष
- सीएसपी: कम्यूनिकेशन सेवा देने वाली कंपनी
- उदाहरण के लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनियां
- एग्रीगेटर
- ऐप्लिकेशन के लिए एग्रीगेटर: ऐसा एग्रीगेटर जो ऐप्लिकेशन को पुष्टि करने की सुविधा देता है. इसके लिए, ऐप्लिकेशन को सीधे तौर पर मोबाइल और इंटरनेट सेवा देने वाली कंपनी से इंटरैक्ट करने की ज़रूरत नहीं होती
- उदाहरण के लिए, Firebase Phone Number Verification
- मेटा-एग्रीगेटर: ऐसा एग्रीगेटर जो कैरियर को ऐप्लिकेशन के लिए उपलब्ध एग्रीगेटर में शामिल होने में मदद करता है
- मेटा-एग्रीगेटर, कैरियर के लिए एनटाइटलमेंट सर्वर सेट अप करने और/या ऐप्लिकेशन के लिए एग्रीगेटर के साथ एनटाइटलमेंट सर्वर की जानकारी कॉन्फ़िगर करने का ज़िम्मेदार हो सकता है
- FPNV: Firebase Phone Number Verification
- Google टीएएम: Google के टेक्निकल अकाउंट मैनेजर, जो कैरियर को FPNV में शामिल होने में मदद करते हैं
- Android Telephony: Android पर फ़ोन नंबर वाले एपीआई उपलब्ध कराता है. इनमें कैरियर और एग्रीगेटर के लिए एक ऐसा प्लैटफ़ॉर्म भी शामिल है जो TS.43 पुष्टि की सुविधा देता है
- GSMA: यह मोबाइल नेटवर्क ऑपरेटरों का एक संगठन है. यह TS.43 जैसे स्पेसिफ़िकेशन तय करता है
- CAMARA: यह Linux का ओपन सोर्स प्रोजेक्ट है. यह GSMA के साथ मिलकर, कैरियर एपीआई तय करता है
पुष्टि करने से जुड़ी शर्तें
- पीएनवी: फ़ोन नंबर की पुष्टि करना
- TS.43: यह मोबाइल क्लाइंट और सर्वर के लिए, एचटीटीपी का इस्तेमाल करके कैरियर से कम्यूनिकेट करने का प्रोटोकॉल तय करता है
- EAP-AKA: पुष्टि करने का यह तरीका, https://www.rfc-editor.org/rfc/rfc4187 में बताया गया है. इसमें उपयोगकर्ता से इंटरैक्ट करने की ज़रूरत नहीं होती
- ECS: एनटाइटलमेंट कॉन्फ़िगरेशन सर्वर
- कैरियर से संपर्क करने के लिए एग्रीगेटर का एंट्री पॉइंट
- ODSA: ऑन-डिवाइस सर्विस ऐक्टिवेशन
- इसका मतलब है कि ईसीएस, डिवाइस पर सेवाओं को चालू करने के लिए अलग-अलग कार्रवाइयां करता है
- उदाहरण के लिए, AcquireTemporaryToken; GetPhoneNumber
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के एनटाइटलमेंट सर्वर और PNV एंडपॉइंट
ज़रूरी एंडपॉइंट बनाना
ACTION1: कैरियर इन एंडपॉइंट को लागू करता है. ये सभी एंडपॉइंट, इंटरनेट के ज़रिए ऐक्सेस किए जा सकते हैं. लागू करने के बारे में ज़्यादा जानकारी के लिए, Annex A देखें.
तकनीकी शर्तें
सामान्य परफ़ॉर्मेंस: सभी एंडपॉइंट का अपटाइम कम से कम 99.99% होना चाहिए.
सुरक्षा: सुरक्षा की वजहों से, मोबाइल और इंटरनेट सेवा देने वाली कंपनी के एंडपॉइंट को ये ज़रूरी शर्तें पूरी करनी होंगी:
- EAP-AKA Auth Token: इसकी समयसीमा एक घंटे के अंदर खत्म होनी चाहिए
- अस्थायी टोकन: इसका इस्तेमाल सिर्फ़ एक बार किया जा सकता है और इसकी समयसीमा पांच मिनट होती है
- पहला विकल्प - Vanilla TS.43
- OAuth टोकन: इसकी समयसीमा एक घंटे के अंदर खत्म होनी चाहिए
- दूसरा विकल्प - CAMARA
- CAMARA ऐक्सेस टोकन: इसका इस्तेमाल सिर्फ़ एक बार किया जा सकता है और यह पांच मिनट में खत्म हो जाता है
एपीआई के डेटा की क्वालिटी: जवाबों में मौजूद कॉन्टेंट 100% सही होना चाहिए.जैसे, एमएसआईएसडीएन सही होना चाहिए.
FPNV, TS.43 के दो वर्शन के साथ काम करता है. मुख्य अंतर यह है कि FPNV सर्वर, TempToken को कैरियर के साथ कैसे शेयर करेगा.
- वनीला टीएस.43: इसका मतलब है कि टीएस.43 स्पेसिफ़िकेशन में बताए गए तरीके से लागू किया गया है
- CAMARA: इसका मतलब है कि CAMARA के JWT बैरर फ़्लो के मुताबिक, लागू किया गया है
पहला विकल्प - Vanilla TS.43 लागू करना
Android डिवाइस से किए गए अनुरोध
- EAP-AKA एंडपॉइंट: यह पुष्टि करने वाला टोकन दिखाता है
- AcquireTemporaryToken Endpoint: ऑथराइज़ेशन टोकन दिए जाने पर, TempToken वापस करता है
FPNV सर्वर से मिले अनुरोध
- OAuth 2.0 एंडपॉइंट - OAuth Client-ID/सीक्रेट फ़्लो: OAuth Client-ID/सीक्रेट की जानकारी देने पर, OAuth ऐक्सेस टोकन वापस पाएं
- GetPhoneNumber एंडपॉइंट: OAuth ऐक्सेस टोकन और TempToken दिए जाने पर, उससे जुड़ा फ़ोन नंबर वापस भेजता है
दूसरा विकल्प - CAMARA लागू करना
CAMARA को लागू करने का तरीका, TS.43 को लागू करने के तरीके जैसा ही है. हालांकि, FPNV सर्वर से मिले अनुरोधों को मैनेज करने के लिए, एंडपॉइंट अलग होते हैं.
Android डिवाइस से किए गए अनुरोध
- EAP-AKA एंडपॉइंट: यह पुष्टि करने वाला टोकन दिखाता है
- AcquireTemporaryToken Endpoint: किसी ऑथराइज़ेशन टोकन के लिए, TempToken वापस पाएं
FPNV सर्वर से मिले अनुरोध
- OAuth 2.0 एंडपॉइंट - JWT बैरर फ़्लो: TempToken वाले JWT के लिए, CAMARA ऐक्सेस टोकन वापस पाएं
- CAMARA NumberVerification v2 एंडपॉइंट: CAMARA ऐक्सेस टोकन दिए जाने पर, उससे जुड़ा फ़ोन नंबर दिखाओ
Android Telephony और FPNV में शामिल होना
मोबाइल और इंटरनेट सेवा देने वाली कंपनी का टेस्ट ऐप्लिकेशन
कार्रवाई 2: कैरियर, Google के टेक्निकल खाता मैनेजर (टीएएम) से संपर्क करता है और टीएएम, कैरियर के साथ FPNV कैरियर टेस्ट ऐप्लिकेशन शेयर करेगा. यह कैरियर टेस्ट ऐप्लिकेशन, FPNV सर्वर को शामिल किए बिना, FPNV से भेजे जाने वाले अनुरोधों की नकल करता है. यह कैरियर टेस्ट ऐप्लिकेशन, कैरियर के लिए काम का है. इससे कैरियर यह पुष्टि कर सकता है कि उसके एंडपॉइंट सही तरीके से काम कर रहे हैं.
ACTION3: मोबाइल और इंटरनेट सेवा देने वाली कंपनी, FPNV कैरियर टेस्ट ऐप्लिकेशन का इस्तेमाल करके यह पुष्टि करती है कि ऊपर दिए गए एंडपॉइंट, शुरू से आखिर तक काम करते हैं.
ज़रूरी प्रोडक्शन कॉन्फ़िगरेशन सेट अप करना
Android Config - EAP-AKA / AcquireTempToken
ACTION4: कैरियर, Android Telephony से EAP-AKA/AcquireTempToken के अनुरोधों के लिए, प्रोडक्शन कॉन्फ़िगरेशन तय करता है
- कॉन्फ़िगरेशन:
- मोबाइल और इंटरनेट सेवा देने वाली इस कंपनी का Android कैननिकल कैरियर आईडी
- TS.43 use_cases की वैल्यू:
use_case=GetPhoneNumber - EAP-AKA/AcquireTempToken के लिए, प्रोडक्शन एनटाइटलमेंट सर्वर का यूआरएल
- Firebase के प्रोडक्शन x509 सर्टिफ़िकेट का SAN और फ़िंगरप्रिंट
- SAN:
fpnv.googleapis.com - फ़िंगरप्रिंट:
aad068c93399a22fc2b11ab58468e8cb72b8f9fc53700991799a8b764c589c7e
Firebase कॉन्फ़िगरेशन - फ़ोन के लिए TempToken एक्सचेंज करें
ACTION5: कैरियर से OAuth टोकन पाने के लिए Firebase क्रेडेंशियल
- Vanilla TS.43
- कैरियर, FPNV के अनुरोधों के लिए OAuth क्लाइंट आईडी और सीक्रेट बनाता है. इसके बाद, कैरियर अपने OAuth एंडपॉइंट को कॉन्फ़िगर करता है, ताकि वह इन क्रेडेंशियल के लिए ऐक्सेस टोकन दे सके
- CAMARA
- Google TAM, Google का सार्वजनिक पासकोड उपलब्ध कराता है, ताकि कैरियर का OAuth एंडपॉइंट यह पुष्टि कर सके कि JWT पर Google ने हस्ताक्षर किया है
ACTION6: मोबाइल और इंटरनेट सेवा देने वाली कंपनी, FPNV सर्वर के लिए प्रोडक्शन कॉन्फ़िगरेशन तय करती है, ताकि फ़ोन के लिए TempToken को बदला जा सके
- इस MNO का Android Canonical Carrier ID
- Vanilla TS.43
- OAuth - क्लाइंट आईडी/सीक्रेट फ़्लो
- OAuth एंडपॉइंट यूआरएल
- OAuth क्लाइंट आईडी/सीक्रेट
- OAuth का दायरा (अगर कोई है)
- GetPhoneNumber
- GetPhoneNumber एंडपॉइंट यूआरएल
- CAMARA
- OAuth - JWT Bearer Flow
- OAuth एंडपॉइंट यूआरएल
- NumberVerification API v2
- NumberVerification एंडपॉइंट यूआरएल
क्रेडेंशियल/कॉन्फ़िगरेशन शेयर करना
Firebase में फ़ोन नंबर की पुष्टि करने की सुविधा
ACTION7: कैरियर, Google के टेक्निकल खाता मैनेजर के साथ ACTION4 और ACTION6 से अपना प्रोडक्शन कॉन्फ़िगरेशन शेयर करता है.
- [अहम जानकारी] OAuth सीक्रेट को Google के साथ शेयर करने के लिए, सुरक्षित आउट-ऑफ़-बैंड (कोई ईमेल नहीं, कोई दस्तावेज़ नहीं वगैरह) तरीके का इस्तेमाल करना ज़रूरी है. इस आउट-ऑफ़-बैंड मैकेनिज़्म पर, कैरियर और Google टीएएम की सहमति होगी.
ACTION8: Google टीएएम, कैरियर टेस्ट ऐप्लिकेशन का इस्तेमाल करके यह पुष्टि करता है कि कॉन्फ़िगरेशन पूरी तरह से काम कर रहा है. इसके बाद, Google टीएएम, OAuth क्रेडेंशियल को Google के सुरक्षित स्टोरेज में सेव करेगा.साथ ही, FPNV के कॉन्फ़िगरेशन को अपडेट करेगा, ताकि TempToken को फ़ोन के लिए एक्सचेंज किया जा सके. जैसे, ACTION6 के कॉन्फ़िगरेशन.
Android Telephony
ACTION9: कैरियर, "Google Open Gateway CSP Onboarding" दस्तावेज़ में दिए गए निर्देशों का पालन करता है. यह दस्तावेज़, Google का टीएएम कैरियर के साथ शेयर करेगा. कैरियर या उसका Google टीएएम, Android Telephony के कॉन्फ़िगरेशन में शामिल होने के लिए, Buganizer टिकट फ़ाइल करता है: https://issuetracker.google.com/issues/new?component=1861595&template=2168610. यह बग, ACTION4 से प्रोडक्शन कॉन्फ़िगरेशन लेगा.
अगर कोई मेटा-ऐग्रीगेटर, कैरियर की ओर से FPNV इंटिग्रेशन सेट अप कर रहा है, तो कैरियर के लीडरशिप (डायरेक्टर लेवल या उससे ऊपर) से सहमति का स्टेटमेंट (ईमेल, PDF, पत्र वगैरह) मिलना चाहिए. इसमें इस बात की पुष्टि होनी चाहिए कि कैरियर का उस ऑपरेटर के साथ कारोबारी संबंध है. इसके बाद, मेटा-ऐग्रेटर, Android Telephony को मोबाइल और इंटरनेट सेवा देने वाली कंपनी की ओर से कॉन्फ़िगरेशन उपलब्ध करा सकता है.
ऐनेक्स A. लागू करने से जुड़ी ज़्यादा जानकारी
केस-सेंसिटिविटी (बड़े और छोटे अक्षरों में अंतर)
- एचटीटीपी हेडर, केस सेंसिटिव नहीं होते हैं
- हालांकि, XML और JSON फ़ॉर्मैट केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होते हैं. इसलिए, अनुरोध/जवाब वाले फ़ील्ड के लिए, पक्का करें कि फ़ील्ड इस दस्तावेज़ से पूरी तरह मेल खाते हों.
पहला चरण - EAP-AKA / AcquireTempToken
एंडपॉइंट: EAP-AKA और AcquireTempToken, दोनों के लिए एक ही ECS एंडपॉइंट का इस्तेमाल किया जाना चाहिए.
EAP-AKA चैलेंज
संदर्भ: TS.43 v12.0 - सेक्शन 2.8.1 - "Embedded EAP-AKA Authentication by Entitlement Configuration Server".
EAP-AKA पहला चरण - पुष्टि करने से जुड़ी चुनौती
EAP-AKA #1 - ECS को GET अनुरोध
Android Telephony मॉड्यूल, TS.43 EAP-AKA अनुरोध को कैरियर के एनटाइटलमेंट सर्वर पर भेजता है.
Android के अनुरोध हेडर
Accept:application/vnd.gsma.eap-relay.v1.0+json- यह GSMA के लिए खास तौर पर बनाया गया JSON फ़ॉर्मैट है, न कि सिर्फ़
application/jsonके लिए
- यह GSMA के लिए खास तौर पर बनाया गया JSON फ़ॉर्मैट है, न कि सिर्फ़
Android के अनुरोध फ़ील्ड
eap_id: RCC.14 Annex C देखें- यानी
0<IMSI>@<realm>.mnc<MNC>.mcc<MCC>.3gppnetwork.org
- यानी
GID1: यह सिर्फ़ तब बताया जाता है, जब एनटाइटलमेंट का वर्शन 12.0 होapp_name: Encoded AppName में, इस्तेमाल के उस उदाहरण की MD5 हैश की गई वैल्यू होगी जिसमें फ़ोन से पुष्टि की जा रही है:- ऐप्लिकेशन के लिए एग्रीगेटर के सभी अनुरोधों में, ऐप्लिकेशन का नाम
Google-OGIहोगा
- ऐप्लिकेशन के लिए एग्रीगेटर के सभी अनुरोधों में, ऐप्लिकेशन का नाम
app: ऐप्लिकेशन आईडीap2014, फ़ोन नंबर की जानकारी दिखाता हैterminal_vendor/model/sw_version: इसे किसी भी वैल्यू पर सेट किया जा सकता है. Android इस बात की गारंटी नहीं देता कि इन फ़ील्ड में डिवाइस की असल जानकारी मौजूद होगीvers: कॉन्फ़िगरेशन वर्शन; जैसे कि 0 या 1entitlement_version: Google, कैरियर को भेजे गए एनटाइटलमेंट वर्शन को कॉन्फ़िगर करेगा. यह इस बात पर निर्भर करेगा कि कैरियर ने क्या अनुरोध किया है- आम तौर पर,
entitlement_version10.0 या 12.0 होता है
- आम तौर पर,
EAP-AKA #1 - ECS से मिला जवाब
ECS रिस्पॉन्स हेडर
Content-Type: Android को उम्मीद है कि जवाब का टाइप, अनुरोध के Accept हेडर से मेल खाता हो- यानी
application/vnd.gsma.eap-relay.v1.0+json
- यानी
ECS के रिस्पॉन्स फ़ील्ड
eap-relay-packet: इसमें RCC.14 - Section C.2 के मुताबिक ईएपी पैकेज शामिल है
EAP-AKA दूसरा चरण - पुष्टि करने वाला टोकन पाना
EAP-AKA #2 - ECS को POST अनुरोध
इसके बाद, Android Telephony मॉड्यूल, मिले हुए eap-relay-packet को उसी एंडपॉइंट पर वापस भेज देगा.
Android के अनुरोध हेडर
Accept: Android, दो Accept हेडर सेट करेगा:application/vnd.gsma.eap-relay.v1.0+json: इसका मतलब है कि अगर डिवाइस को फिर से EAP-AKA अनुरोध भेजना है, तो कैरियर फिर से JSON भेजता हैtext/vnd.wap.connectivity-xml: यह उस फ़ॉर्मैट को दिखाता है जिसमें Android को उम्मीद है कि कैरियर, EAP-AKA पुष्टि करने वाले टोकन को वापस भेजेगा
Content-Type:application/vnd.gsma.eap-relay.v1.0+json
Android के अनुरोध फ़ील्ड
eap-relay-packet: इसमें पिछले EAP-AKA रिस्पॉन्स का eap-relay-packet शामिल होता है. हालांकि, यह RFC 4817 - सेक्शन 9.2 के मुताबिक EAP-Response/AKA-Challenge फ़ॉर्मैट में होता है.
EAP-AKA #2 - ECS से मिला जवाब
EAP-AKA की पुष्टि होने के बाद, कैरियर एक ऑथराइज़ेशन टोकन वापस भेजता है.
ECS रिस्पॉन्स हेडर
Content-Type: Android को उम्मीद है कि अनुरोध के Accept हेडर से मेल खाने वाला जवाब- यानी कि Android को उम्मीद है कि अनुमति टोकन वाला रिस्पॉन्स,
text/vnd.wap.connectivity-xmlटाइप का होगा - अगर कैरियर चाहता है कि Android, EAP-AKA का दूसरा अनुरोध करे, तो
application/vnd.gsma.eap-relay.v1.0+jsonAccept हेडर का इस्तेमाल किया जाता है
- यानी कि Android को उम्मीद है कि अनुमति टोकन वाला रिस्पॉन्स,
ECS के रिस्पॉन्स फ़ील्ड
TOKEN.token: इसमें पुष्टि करने वाला टोकन होता हैTOKEN.validity: यह वह समय होता है जब डिवाइस को जवाब मिलने के बाद, जवाब मान्य रहता है- Google यह पुष्टि करेगा कि ऑथराइज़ेशन टोकन, तकनीकी ज़रूरतों को पूरा करता है या नहीं
AcquireTemporary Token
AcquireTempToken - ECS को GET अनुरोध
EAP-AKA से मिले ऑथ टोकन का इस्तेमाल करके, Android क्लाइंट, मोबाइल और इंटरनेट सेवा देने वाली कंपनी के AcquireTemporaryToken एंडपॉइंट को कॉल करके, कुछ समय के लिए टोकन फ़ेच करता है. अनुरोध
- उदाहरण: TS.43 v12.0 - Section 6.4.6 - "AcquireTemporaryToken Request Example"
- AcquireTempToken में, EAP-AKA #1 जैसे ही पैरामीटर होते हैं. हालांकि, इनमें ये पैरामीटर शामिल नहीं होते:
- AcquireTempToken,
IMSI, operationऔरoperation_targetsके बारे में भी बताता है - AcquireTempToken में
EAP_IDके बारे में नहीं बताया गया है
- AcquireTempToken,
Android के अनुरोध हेडर
Accept: Android,text/vnd.wap.connectivity-xmlसेट करेगा
Android के अनुरोध फ़ील्ड
terminal_vendor/model/sw_version: Android इस बात की गारंटी नहीं देता कि इन फ़ील्ड में डिवाइस की असली जानकारी मौजूद हैoperation_targets- FPNV: ऑपरेशन का टारगेट
GetPhoneNumberहै
- FPNV: ऑपरेशन का टारगेट
AcquireTempToken - ECS से मिला जवाब
उदाहरण: TS.43 v12.0 - Section 6.6.6 - "AcquireTemporaryToken Response Example"
ECS रिस्पॉन्स हेडर
Content-Type: Android को उम्मीद है कि जवाब का टाइप, अनुरोध के Accept हेडर से मेल खाता हो- यानी
text/vnd.wap.connectivity-xml
- यानी
ECS के रिस्पॉन्स फ़ील्ड
APPLICATION.TemporaryToken: यह एक TemporaryToken है. FPNV सर्वर, इसे फ़ोन नंबर के बदले में एक्सचेंज कर सकता हैAPPLICATION.TemporaryTokenExpiry: खत्म होने का समय, YYYY-MM-DDThh:mm:ssTZD फ़ॉर्मैट में- Google यह पुष्टि करेगा कि TempToken की समयसीमा खत्म होने की तारीख, तकनीकी ज़रूरतों के मुताबिक है या नहीं
APPLICATION.OperationResult: TS.43 v12.0 - Section 6.5.1 देखें- खास तौर पर, अगर ऑपरेशन
SUCCESSके तौर पर किया गया है, तो 1 दिखाएं
- खास तौर पर, अगर ऑपरेशन
दूसरा चरण - फ़ोन नंबर के लिए TempToken को Exchange करना
पहला विकल्प - Vanilla TS.43
एंडपॉइंट: OAuth और GetPhoneNumber एंडपॉइंट, एक-दूसरे से अलग सर्वर/एंडपॉइंट हो सकते हैं. ये एंडपॉइंट, EAP-AKA/AcquireTempToken एंडपॉइंट से अलग भी हो सकते हैं.
OAuth
कैरियर को इस OAuth गाइड का पालन करना चाहिए. साथ ही, Google को OAuth की ज़रूरी जानकारी (क्लाइंट आईडी; क्लाइंट सीक्रेट; OAuth सर्वर यूआरएल) देनी चाहिए
OAuth - POST Request to Carrier's Auth Server
FPNV अनुरोध हेडर
Authorization: FPNV,Basic $BASE64_ENCODED_CREDENTIALSसेट करेगा- base64 कोड में बदले गए क्रेडेंशियल, OAuth के base64 कोड में बदले गए क्रेडेंशियल होते हैं
$CLIENT_ID:$CLIENT_SECRET
- base64 कोड में बदले गए क्रेडेंशियल, OAuth के base64 कोड में बदले गए क्रेडेंशियल होते हैं
Content-Type: FPNV,application/x-www-form-urlencodedसेट करेगाAccept: FPNV,application/jsonसेट करेगा
FPNV के अनुरोध वाले फ़ील्ड
grant_type:client_credentials
POST HTTP/1.1
Host: $OAUTH_ENDPOINT
Authorization: Basic $BASE64_ENCODED_CREDENTIALS
Content-Type: application/x-www-form-urlencoded
Accept: application/json
grant_type=client_credentials
OAuth - Response from Carrier's Auth Server
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के रिस्पॉन्स हेडर
Content-Type: FPNV को उम्मीद है कि जवाब का टाइप, अनुरोध के Accept हेडर से मेल खाता हो- यानी
application/json
- यानी
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के जवाब वाले फ़ील्ड
access_token: OAuth ऐक्सेस टोकनtoken_type:bearerexpires_in: OAuth ऐक्सेस टोकन के खत्म होने की समयसीमा (सेकंड में)- Google यह पुष्टि करेगा कि OAuth टोकन की समयसीमा खत्म होने का समय, तकनीकी ज़रूरी शर्तों के मुताबिक है या नहीं
200 OK
Content-Type: application/json
{
"access_token": $ACCESS_TOKEN,
"token_type": "bearer",
"expires_in": $EXPIRATION_IN_SECS,
}
GetPhoneNumber
GetPhoneNumber - ECS को POST अनुरोध
Google का पुष्टि करने वाला सर्वर, GetPhoneNumber ऑपरेशन का इस्तेमाल करके फ़ोन नंबर फ़ेच करता है.
- उदाहरण: TS.43 v12.0 - Section 6.4.7 - "GetPhoneNumber Request Example"
FPNV के अनुरोध के हेडर
Accept:application/jsonContent-Type:application/json
FPNV के अनुरोध वाले फ़ील्ड
requestor_id: इससे उस सेवा की पहचान होती है जो GetPhoneNumber TS.43 ऑपरेशन- को कॉल कर रही है
- Firebase फ़ोन नंबर की पुष्टि करने वाला यूयूआईडी:
191fd7cc-f7cd-4bb4-a5d2-455ae1fb9a19
- Firebase फ़ोन नंबर की पुष्टि करने वाला यूयूआईडी:
temporary_token: AcquireTempToken से मिला TemporaryTokenaccess_token: Google के लिए OAuth टोकन, ताकि वह कैरियर से पुष्टि कर सकेterminal_vendor/model/sw_version: FPNV इन फ़ील्ड में मनचाही वैल्यू डालेगाentitlement_version: Google, कैरियर को भेजे गए एनटाइटलमेंट वर्शन को कॉन्फ़िगर करेगा. यह इस बात पर निर्भर करेगा कि कैरियर ने क्या अनुरोध किया है- आम तौर पर,
entitlement_version10.0 या 12.0 होता है
- आम तौर पर,
app: FPNV,ap2014सेट करेगाapp_name: FPNV, FPNV के सभी अनुरोधों के लिएfirebaseसेट करेगा- ध्यान दें: AcquireTempToken में
Google-OGIकाapp_nameहोगा. इससे कोई फ़र्क़ नहीं पड़ता कि कौनसा एग्रीगेटर इस्तेमाल किया गया है
- ध्यान दें: AcquireTempToken में
operation: FPNV,GetPhoneNumberसेट करेगा
GetPhoneNumber - ECS से मिला जवाब
उदाहरण: TS.43 v12.0 - Section 6.6.7 - "GetPhoneNumber Response Example"
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के रिस्पॉन्स हेडर
Content-Type: FPNV को उम्मीद है कि जवाब का टाइप, अनुरोध के Accept हेडर से मेल खाता हो- यानी
application/json
- यानी
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के जवाब वाले फ़ील्ड
ap2014.MSISDN: FPNV को फ़ोन नंबर, E164 फ़ॉर्मैट में चाहिए- JSON, केस-सेंसिटिव होता है. इसलिए, MSISDN को कैपिटल लेटर में होना चाहिए
TemporaryToken से जुड़ी गड़बड़ी के कोड
TS.43 v12.0 के सेक्शन 2.8.6 से लिए गए रेफ़रंस.
यहां दी गई टेबल में, GetPhoneNumber के अनुरोधों के लिए, Google Verification Server को ECS से मिलने वाले जवाबों के बारे में बताया गया है:
उदाहरण |
ECS से GET/POST रिस्पॉन्स कोड |
तीसरे पक्ष के सर्वर पर होने वाली कार्रवाई |
अनुरोध में पैरामीटर मौजूद नहीं हैं या अमान्य हैं या गलत फ़ॉर्मैट में हैं |
400 खराब अनुरोध |
उपयोगकर्ता के अगले अनुरोध पर / क्लाइंट को रीस्टार्ट करने के बाद फिर से कोशिश करें |
अनुरोध में मौजूद अस्थायी टोकन अमान्य है या इसकी समयसीमा खत्म हो गई है |
401 कोड वाली गड़बड़ी: अनुमति नहीं है |
अगर हो सके, तो डिवाइस को ट्रिगर करें, ताकि वह ईसीएस से मान्य (नया) अस्थायी टोकन हासिल कर सके |
अस्थायी टोकन के साथ अमान्य कार्रवाई |
403 निषिद्ध |
उपयोगकर्ता के अगले अनुरोध पर / क्लाइंट को रीस्टार्ट करने के बाद फिर से कोशिश करें |
अनुरोध किया गया संसाधन नहीं मिला |
404: पेज नहीं मिला |
उपयोगकर्ता के अगले अनुरोध पर / क्लाइंट को रीस्टार्ट करने के बाद फिर से कोशिश करें |
अनुरोध को प्रोसेस करते समय, ईसीएस में कोई गड़बड़ी हुई |
500 सर्वर में गड़बड़ी |
उपयोगकर्ता के अगले अनुरोध पर / क्लाइंट को रीस्टार्ट करने के बाद फिर से कोशिश करें |
दूसरा विकल्प - CAMARA
एंडपॉइंट: CAMARA ऐक्सेस टोकन और फ़ोन नंबर पाने के लिए, अलग-अलग सर्वर/एंडपॉइंट का इस्तेमाल किया जा सकता है. ये एंडपॉइंट, EAP-AKA / AcquireTempToken एंडपॉइंट से भी अलग हो सकते हैं.
OAuth - CAMARA ऐक्सेस टोकन वापस पाएं
Google सिर्फ़ CAMARA के JWT बैरर फ़्लो के साथ काम करेगा. साथ ही, CIBA फ़्लो के साथ काम नहीं करेगा.
CAMARA ऐक्सेस टोकन - कैरियर को POST अनुरोध
Google, इन फ़ील्ड के साथ एक JWT बनाएगा.
iss: JWT जारी करने वाला (इसे क्लाइंट आईडी भी कहा जाता है)- जैसे,
firebase(असल एफ़पीएनवी इंटिग्रेशन) याfpnv-carrier-tester-app(मोबाइल और इंटरनेट सेवा देने वाली कंपनी का टेस्ट ऐप्लिकेशन)
- जैसे,
sub: JWT का विषय- यानी
operatortoken:$TEMP_TOKEN
- यानी
aud: ऑडियंस; ऐसे लोग या इकाइयां जिनके लिए JWT बनाया गया है- टोकन एंडपॉइंट यूआरएल (यानी कि अनुमति देने वाले सर्वर का यूआरएल)
exp: कुकी के खत्म होने का समय, सेकंड में- Google, समयसीमा खत्म होने की वह अवधि भेजेगा जो इस बात से मेल खाती हो कि CAMARA ऐक्सेस टोकन कितने समय तक मान्य होना चाहिए. इसके लिए, तकनीकी ज़रूरी शर्तें देखें
iat: जारी करने का समय, सेकंड मेंjti: रीप्ले अटैक से बचने के लिए यूनीक आइडेंटिफ़ायर- उदाहरण के लिए, रैंडम तरीके से जनरेट किया गया यूयूआईडी
scope: अनुरोध करने का मकसद- यानी
dpv:FraudPreventionAndDetection number-verification:device-phone-number:read
- यानी
{
"iss": "firebase",
"sub": "operatortoken:ey...",
"aud": $OAUTH_ENDPOINT,
"exp": $EXPIRATION_TIME_IN_SECS,
"iat": $ISSUED_AT_TIME_IN_SECS,
"jti": $RANDOMLY_GENERATED_UUID,
"scope": "dpv:FraudPreventionAndDetection number-verification:device-phone-number:read"
}
FPNV, अपने निजी कोड का इस्तेमाल करके JWT पर साइन करेगा. इसके बाद, कैरियर उस सार्वजनिक कोड का इस्तेमाल करके JWT की पुष्टि कर सकता है. FPNV, JWKS एंडपॉइंट का इस्तेमाल करके सार्वजनिक पासकोड उपलब्ध कराएगा. कैरियर को सार्वजनिक पासकोड के लिए, इस JWKS एंडपॉइंट को नियमित तौर पर पोल करना चाहिए. उदाहरण के लिए, हर दिन एक बार. ऐसा इसलिए, क्योंकि FPNV सार्वजनिक पासकोड को नियमित तौर पर बदलता रहता है. उदाहरण के लिए, हर 30 दिन में एक बार.
FPNV के अनुरोध के हेडर
Content-Type:application/x-www-form-urlencodedAccept:application/json
FPNV के अनुरोध वाले फ़ील्ड
grant_type:urn:ietf:params:oauth:grant-type:jwt-bearerassertion: ऊपर बनाया गया JWT और FPNV के निजी पासकोड से हस्ताक्षर किया गया- खास तौर पर, इस JWT में TempToken शामिल है
POST /token.oauth2 HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
Accept: application/json
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&assertion=$JWT
CAMARA ऐक्सेस टोकन - कैरियर से मिला जवाब
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के रिस्पॉन्स हेडर
Content-Type: FPNV को उम्मीद है कि जवाब का टाइप, अनुरोध के Accept हेडर से मेल खाता हो- यानी
application/json
- यानी
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के जवाब वाले फ़ील्ड
access_token: CAMARA का ऐक्सेस टोकन. इसे बाद में फ़ोन नंबर के लिए बदला जा सकता हैtoken_type:bearerexpires_in: OAuth ऐक्सेस टोकन के खत्म होने की समयसीमा (सेकंड में)- Google यह पुष्टि करेगा कि OAuth टोकन की समयसीमा खत्म होने का समय, तकनीकी ज़रूरी शर्तों के मुताबिक है या नहीं
scope: अनुरोध करने का मकसद- यानी
dpv:FraudPreventionAndDetection number-verification:device-phone-number:read
- यानी
200 OK
Content-Type: application/json
{
"access_token": $CAMARA_ACCESS_TOKEN,
"token_type": "bearer",
"expires_in": $EXPIRATION_IN_SECS,
"scope": "dpv:FraudPreventionAndDetection number-verification:device-phone-number:read"
}
CAMARA NumberVerification API v2
इसके बाद, Google उस CAMARA ऐक्सेस टोकन को बदल देगा. इसके लिए, वह मोबाइल और इंटरनेट सेवा देने वाली कंपनी के /device-phone-number एंडपॉइंट पर GET अनुरोध भेजेगा.
CAMARA NumberVerification - GET Request to Carrier
FPNV के अनुरोध के हेडर
Authorization:Bearer $CAMARA_ACCESS_TOKENAccept:application/json
GET /device-phone-number
Authorization: Bearer $CAMARA_ACCESS_TOKEN
Accept: application/json
Content-Type: application/json
CAMARA NumberVerification - Response from Carrier
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के रिस्पॉन्स हेडर
Content-Type: FPNV को उम्मीद है कि जवाब का टाइप, अनुरोध के Accept हेडर से मेल खाता हो- यानी
application/json
- यानी
मोबाइल और इंटरनेट सेवा देने वाली कंपनी के जवाब वाले फ़ील्ड
devicePhoneNumber: यह फ़ंक्शन, फ़ोन नंबर को E164 फ़ॉर्मैट में दिखाता है
200 OK
Content-Type: application/json
{
"devicePhoneNumber": $PHONE_NUMBER
}