FPNV के लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनी के तौर पर शामिल होने के लिए तकनीकी गाइड

पिछले बदलाव की तारीख: 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 डिवाइस से किए गए अनुरोध

  1. EAP-AKA एंडपॉइंट: यह पुष्टि करने वाला टोकन दिखाता है
  2. AcquireTemporaryToken Endpoint: ऑथराइज़ेशन टोकन दिए जाने पर, TempToken वापस करता है

FPNV सर्वर से मिले अनुरोध

  1. OAuth 2.0 एंडपॉइंट - OAuth Client-ID/सीक्रेट फ़्लो: OAuth Client-ID/सीक्रेट की जानकारी देने पर, OAuth ऐक्सेस टोकन वापस पाएं
  2. GetPhoneNumber एंडपॉइंट: OAuth ऐक्सेस टोकन और TempToken दिए जाने पर, उससे जुड़ा फ़ोन नंबर वापस भेजता है

दूसरा विकल्प - CAMARA लागू करना

CAMARA को लागू करने का तरीका, TS.43 को लागू करने के तरीके जैसा ही है. हालांकि, FPNV सर्वर से मिले अनुरोधों को मैनेज करने के लिए, एंडपॉइंट अलग होते हैं.

Android डिवाइस से किए गए अनुरोध

  1. EAP-AKA एंडपॉइंट: यह पुष्टि करने वाला टोकन दिखाता है
  2. AcquireTemporaryToken Endpoint: किसी ऑथराइज़ेशन टोकन के लिए, TempToken वापस पाएं

FPNV सर्वर से मिले अनुरोध

  1. OAuth 2.0 एंडपॉइंट - JWT बैरर फ़्लो: TempToken वाले JWT के लिए, CAMARA ऐक्सेस टोकन वापस पाएं
  2. 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 का इस्तेमाल कर रहा है.
पहली इमेज. डिवाइस, कैरियर सर्वर से TempToken को फिर से हासिल करता है. इसके लिए, वह EAP-AKA और AcquireTempToken का इस्तेमाल करता है. दूसरा चरण - TempToken को फ़ोन नंबर के लिए एक्सचेंज करना में, TempToken को फ़ोन नंबर के लिए एक्सचेंज करने का तरीका बताया जाएगा.

एंडपॉइंट: 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 के लिए

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 या 1
  • entitlement_version: Google, कैरियर को भेजे गए एनटाइटलमेंट वर्शन को कॉन्फ़िगर करेगा. यह इस बात पर निर्भर करेगा कि कैरियर ने क्या अनुरोध किया है
    • आम तौर पर, entitlement_version 10.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+json Accept हेडर का इस्तेमाल किया जाता है

ECS के रिस्पॉन्स फ़ील्ड

  • TOKEN.token: इसमें पुष्टि करने वाला टोकन होता है
  • TOKEN.validity: यह वह समय होता है जब डिवाइस को जवाब मिलने के बाद, जवाब मान्य रहता है

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 के बारे में नहीं बताया गया है

Android के अनुरोध हेडर

  • Accept: Android, text/vnd.wap.connectivity-xml सेट करेगा

Android के अनुरोध फ़ील्ड

  • terminal_vendor/model/sw_version: Android इस बात की गारंटी नहीं देता कि इन फ़ील्ड में डिवाइस की असली जानकारी मौजूद है
  • operation_targets
    • FPNV: ऑपरेशन का टारगेट GetPhoneNumber है

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

इस डायग्राम में दिखाया गया है कि Google सर्वर, Vanilla TS.43 का इस्तेमाल करके, किसी कैरियर के साथ पुष्टि किए गए फ़ोन नंबर के लिए एक अस्थायी टोकन का आदान-प्रदान कर रहा है.
दूसरी इमेज. इसके बाद, Google सर्वर, मोबाइल और इंटरनेट सेवा देने वाली कंपनी को TempToken भेजता है. इसके बदले में, वह GetPhoneNumber को कॉल करके पुष्टि किए गए फ़ोन नंबर की जानकारी लेता है. इस डायग्राम में, पहला चरण - EAP-AKA / AcquireTempToken के बारे में खास जानकारी दी गई है.

एंडपॉइंट: 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
  • 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: bearer
  • expires_in: 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 ऑपरेशन का इस्तेमाल करके फ़ोन नंबर फ़ेच करता है.

FPNV के अनुरोध के हेडर

  • Accept: application/json
  • Content-Type: application/json

FPNV के अनुरोध वाले फ़ील्ड

  • requestor_id: इससे उस सेवा की पहचान होती है जो GetPhoneNumber TS.43 ऑपरेशन
      को कॉल कर रही है
    • Firebase फ़ोन नंबर की पुष्टि करने वाला यूयूआईडी: 191fd7cc-f7cd-4bb4-a5d2-455ae1fb9a19
  • temporary_token: AcquireTempToken से मिला TemporaryToken
  • access_token: Google के लिए OAuth टोकन, ताकि वह कैरियर से पुष्टि कर सके
  • terminal_vendor/model/sw_version: FPNV इन फ़ील्ड में मनचाही वैल्यू डालेगा
  • entitlement_version: Google, कैरियर को भेजे गए एनटाइटलमेंट वर्शन को कॉन्फ़िगर करेगा. यह इस बात पर निर्भर करेगा कि कैरियर ने क्या अनुरोध किया है
    • आम तौर पर, entitlement_version 10.0 या 12.0 होता है
  • app: FPNV, ap2014 सेट करेगा
  • app_name: FPNV, FPNV के सभी अनुरोधों के लिए firebase सेट करेगा
    • ध्यान दें: AcquireTempToken में Google-OGI का app_name होगा. इससे कोई फ़र्क़ नहीं पड़ता कि कौनसा एग्रीगेटर इस्तेमाल किया गया है
  • 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

इस डायग्राम में दिखाया गया है कि Google सर्वर, CAMARA के JWT बैरर फ़्लो का इस्तेमाल करके, मोबाइल और इंटरनेट सेवा देने वाली कंपनी के साथ पुष्टि किए गए फ़ोन नंबर के लिए, कुछ समय के लिए मान्य टोकन का आदान-प्रदान कर रहा है.
दूसरी इमेज. इसके बाद, Google सर्वर, मोबाइल और इंटरनेट सेवा देने वाली कंपनी को TempToken भेजता है. इसके बदले में, वह पुष्टि किए गए फ़ोन नंबर की जानकारी लेता है. इसके लिए, CAMARA के JWT बैरर फ़्लो का इस्तेमाल किया जाता है. इस डायग्राम में, पहला चरण - EAP-AKA / AcquireTempToken के बारे में बताया गया है.

एंडपॉइंट: 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-urlencoded
  • Accept: application/json

FPNV के अनुरोध वाले फ़ील्ड

  • grant_type: urn:ietf:params:oauth:grant-type:jwt-bearer
  • assertion: ऊपर बनाया गया 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: bearer
  • expires_in: 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_TOKEN
  • Accept: 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
}