पहचान-जागरूक प्रॉक्सी के साथ उपयोगकर्ता प्रमाणीकरण

अपने वेब ऐप्लिकेशन के उपयोगकर्ताओं की पुष्टि करना अक्सर ज़रूरी होता है. इसके लिए, आम तौर पर आपके ऐप्लिकेशन में खास प्रोग्रामिंग की ज़रूरत होती है. Google Cloud Platform ऐप्लिकेशन के लिए आप उन ज़िम्मेदारियों को Identity-Aware प्रॉक्सी सेवा को दे सकते हैं. अगर आपको सिर्फ़ चुने हुए उपयोगकर्ताओं के लिए ऐक्सेस प्रतिबंधित करना है, तो ऐप्लिकेशन में कोई बदलाव करने की ज़रूरत नहीं है. अगर ऐप्लिकेशन को उपयोगकर्ता की पहचान जानने की ज़रूरत है (जैसे कि उपयोगकर्ता की पसंद को सर्वर-साइड पर रखना) पहचान-जागरूक प्रॉक्सी उसे कम से कम ऐप्लिकेशन कोड दे सकता है.

आइडेंट-अवेयर प्रॉक्सी क्या है?

पहचान-जागरूक प्रॉक्सी (IAP) एक Google Cloud Platform सेवा है जो आपके ऐप्लिकेशन पर भेजे गए वेब अनुरोधों को रोकती है, Google पहचान सेवा का इस्तेमाल करके अनुरोध करने वाले उपयोगकर्ता की पुष्टि करती है, और अनुरोधों को सिर्फ़ तभी अनुमति देती है जब वे किसी ऐसे उपयोगकर्ता से आते हैं जिसे आप अनुमति देते हैं. इसके अलावा, अनुरोध के हेडर में बदलाव करके उसमें पुष्टि किए गए उपयोगकर्ता के बारे में जानकारी शामिल की जा सकती है.

यह कोडलैब आपको अपना ऐप्लिकेशन बनाने, उसके ऐक्सेस को सीमित करने, और आईएपी से उपयोगकर्ता की पहचान पाने के बारे में जानकारी देगा.

आप क्या बनाएंगे

इस कोडलैब में आप Google App Engine की मदद से कम से कम वेब ऐप्लिकेशन बनाने जा रहे हैं. इसके बाद, ऐप्लिकेशन के ऐक्सेस पर पाबंदी लगाने और उसे उपयोगकर्ता की पहचान से जुड़ी जानकारी देने के लिए, पहचान-जागरूक प्रॉक्सी का इस्तेमाल करने के अलग-अलग तरीके देख सकते हैं. आपका ऐप्लिकेशन:

  • कोई स्वागत पेज दिखाएं
  • आईएपी से मिली उपयोगकर्ता की पहचान की जानकारी ऐक्सेस करना
  • उपयोगकर्ता की पहचान से जुड़ी जानकारी को झूठे नाम से भेजने से रोकने के लिए, क्रिप्टोग्राफ़िक पुष्टि करने की सुविधा का इस्तेमाल करना

आप क्या #39;जानेंगे

  • Python 3.7 का इस्तेमाल करके, आसान App Engine ऐप्लिकेशन लिखने और लागू करने का तरीका
  • अपने ऐप्लिकेशन के ऐक्सेस पर पाबंदी लगाने के लिए, आईएपी को चालू और बंद करने का तरीका
  • अपने ऐप्लिकेशन में उपयोगकर्ता की पहचान की जानकारी, आईएपी से पाने का तरीका
  • झूठे नाम से मेल भेजने से बचाने के लिए, आईएपी से जानकारी की पुष्टि करने का तरीका जानें

आपको क्या चाहिए

  • एक आधुनिक वेब ब्राउज़र, जैसे कि Chrome.
  • Python प्रोग्रामिंग भाषा की बुनियादी जानकारी

इस कोडलैब का फ़ोकस Google App Engine और IAP पर है. जो कॉन्सेप्ट और कोड ब्लॉक काम के नहीं हैं उन्हें ऊपर दिखाया जाता है. साथ ही, उन्हें कॉपी करके चिपकाने के लिए उपलब्ध कराया जाता है.

आप Cloud Shell के कमांड लाइन के साथ काम करेंगे. उस एनवायरमेंट को खोलकर और उसमें सैंपल कोड फ़ेच करके शुरू करें.

कंसोल और Cloud Shell लॉन्च करना

लैब पेज के ऊपर बाईं ओर, 'Google कंसोल खोलें' बटन पर क्लिक करें. आपको उस बटन के नीचे दिखाए गए उपयोगकर्ता नाम और पासवर्ड से लॉग इन करना होगा.

इस कोडलैब के सभी निर्देश, किसी क्लाउड शेल में उसी प्रोजेक्ट के लिए लागू किए जाएंगे जिसे आपके लिए बनाया गया है और खोला गया है. कंसोल पेज हेडर के दाईं ओर मौजूद, Cloud Shell चालू करें आइकॉन पर क्लिक करके, Cloud Shell खोलें. पेज के निचले आधे हिस्से में आप कमांड डाल सकते हैं और निर्देश दे सकते हैं.

निर्देश आपके अपने कंप्यूटर से चलाए जा सकते हैं, लेकिन पहले आपको ज़रूरी डेवलपमेंट सॉफ़्टवेयर इंस्टॉल और कॉन्फ़िगर करना होगा. Cloud Shell में ज़रूरत के मुताबिक सभी सॉफ़्टवेयर टूल पहले से मौजूद हैं.

कोड डाउनलोड करें

निर्देशों का इस्तेमाल करने के लिए, Cloud Shell में कमांड लाइन एरिया पर क्लिक करें. GitHub से कोड फ़ेच करें और फिर कोड फ़ोल्डर में बदलें:

git clone https://github.com/googlecodelabs/user-authentication-with-iap.git
cd iap-codelab

इस फ़ोल्डर में इस कोडलैब के हर चरण के लिए एक सब-फ़ोल्डर है. हर चरण को पूरा करने के लिए, आपको सही फ़ोल्डर में बदलना होगा.

यह Python 3.7 में लिखा गया App Engine Standard ऐप्लिकेशन है, जो & &gt, नमस्ते, World&kot; वेलकम पेज दिखाता है. हम डिप्लॉय करेंगे और उसकी जांच करेंगे. इसके बाद, आईएपी से ऐक्सेस देने पर पाबंदी लगाएं.

ऐप्लिकेशन कोड की समीक्षा करें

मुख्य प्रोजेक्ट फ़ोल्डर से 1-HelloWorld सबफ़ोल्डर में बदलें, जिसमें इस चरण के लिए कोड है.

cd 1-HelloWorld

ऐप्लिकेशन कोड main.py फ़ाइल में है. यह किसी टेंप्लेट के कॉन्टेंट के साथ वेब अनुरोधों का जवाब देने के लिए, Flask वेब फ़्रेमवर्क का इस्तेमाल करता है. यह टेंप्लेट फ़ाइल templates/index.html में है. इस चरण में सिर्फ़ सादा एचटीएमएल शामिल है. दूसरी टेंप्लेट फ़ाइल में, templates/privacy.html में मौजूद कंकाल की जानकारी से जुड़ी निजता नीति का उदाहरण दिया गया है.

दो अन्य फ़ाइलें होती हैं: requirements.txt उन सभी Python लाइब्रेरी की सूची बनाता है जो डिफ़ॉल्ट नहीं हैं. साथ ही, app.yaml Google Cloud Platform को बताता है कि यह Python 3.7 ऐप्लिकेशन इंजन ऐप्लिकेशन है.

बिल्ली निर्देश का इस्तेमाल करके, हर फ़ाइल को शेल में जोड़ा जा सकता है:

cat main.py

इसके अलावा, आप Cloud Shell विंडो में सबसे ऊपर दाईं ओर मौजूद, पेंसिल आइकॉन पर क्लिक करके, क्लाउड शेल कोड एडिटर खोल सकते हैं. साथ ही, उस तरीके से कोड की जांच कर सकते हैं.

आपको इस चरण के लिए कोई भी फ़ाइल बदलने की ज़रूरत नहीं है.

App Engine पर डिप्लॉय करें

अब Python 3.7 के लिए ऐप्लिकेशन को App Engine Standard एनवायरमेंट में डिप्लॉय करें

gcloud app deploy

आपको डिप्लॉय करने के लिए कोई इलाका चुनने को कहा जा सकता है. अपने आस-पास कोई ऐसा डिवाइस चुनें जिस पर लिखा हो कि यह मानक &कोटेशन की सुविधा देता है. अगर आपसे पूछा जाए कि क्या आप जारी रखना चाहते हैं, तो Y डालें.

कुछ ही मिनटों में डिप्लॉयमेंट पूरा हो जाएगा. आपको gcloud app browse के साथ अपना आवेदन देखने के लिए एक मैसेज दिखेगा. वह निर्देश डालें. अगर आपके ब्राउज़र में कोई नया टैब नहीं खुलता है, तो दिखाए गए लिंक पर क्लिक करके उसे नए टैब में खोलें या ज़रूरत पड़ने पर इसे मैन्युअल रूप से खोले गए नए टैब में कॉपी करें. यह ऐप्लिकेशन पहली बार चल रहा है. इसलिए, क्लाउड इंस्टेंस शुरू होने में कुछ सेकंड का समय लगेगा. साथ ही, आपको यह विंडो दिखेगी.

आप उस वेब पेज को देखने के लिए, इंटरनेट से कनेक्ट किसी भी कंप्यूटर से वही यूआरएल खोल सकते हैं. ऐक्सेस पर अभी तक पाबंदी नहीं लगी है.

आईएपी से ऐक्सेस पर पाबंदी लगाना

Cloud Console की विंडो में, पेज के सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें. इसके बाद, सुरक्षा पर और फिर पहचान-जागरूक प्रॉक्सी पर क्लिक करें.

आप पहली बार इस प्रोजेक्ट के लिए पुष्टि करने का विकल्प चालू कर चुके हैं. इसलिए, आपको एक मैसेज दिखेगा कि आईएपी का इस्तेमाल करने से पहले, आपको अपनी OAuth सहमति स्क्रीन कॉन्फ़िगर करनी होगी.

'कॉन्फ़िगर करें' स्क्रीन बटन पर क्लिक करें. इसके बाद, सहमति वाली स्क्रीन को कॉन्फ़िगर करने के लिए एक नया टैब खुलेगा.

ज़रूरी फ़ील्ड में सही वैल्यू डालें:

ऐप्स का नाम

आईएपी का उदाहरण

सहायता के लिए ईमेल पता

आपका ईमेल पता. हो सकता है कि वह पहले से ही आपके लिए भरा हुआ हो.

ऐसा डोमेन जिसे अनुमति मिली है

ऐप्लिकेशन के यूआरएल का होस्टनेम और #39; यूआरएल, जैसे कि iap-example-999999.appspot.com. आप इसे हैलो वर्ल्ड वेब पेज के पता बार में देख सकते हैं जिसे आपने पहले खोला था. उस यूआरएल से शुरू होने वाला https:// या पीछे वाला / शामिल न करें.

यह वैल्यू डालने के बाद, आपको Enter दबाएं.

ऐप्लिकेशन के होम पेज का लिंक

वह यूआरएल जिसका इस्तेमाल आपने ऐप्लिकेशन देखने के लिए किया

ऐप्लिकेशन की निजता नीति का लिंक

ऐप्लिकेशन में निजता पेज का लिंक, जिसके आखिर में /privacy वाला होम पेज लिंक है

सेव करें पर क्लिक करें. आपको क्रेडेंशियल बनाने के लिए कहा जाएगा. आपको इस कोडलैब के लिए क्रेडेंशियल बनाने की ज़रूरत नहीं है. इसलिए, आप इस ब्राउज़र टैब को बंद कर सकते हैं.

पहचान-जागरूक प्रॉक्सी पेज पर वापस जाएं और उसे रीफ़्रेश करें. अब आपको उन संसाधनों की सूची दिखेगी जिन्हें आप सुरक्षित कर सकते हैं.

आईएपी चालू करने के लिए, ऐप्लिकेशन इंजन ऐप्लिकेशन लाइन में आईएपी कॉलम में टॉगल बटन पर क्लिक करें.

आपको उन डोमेन नाम की जानकारी दिखेगी जिन्हें आईएपी से सुरक्षित रखा जाएगा. 'चालू करें' पर क्लिक करें.

अब ब्राउज़र टैब खोलें और अपने ऐप्लिकेशन के यूआरएल पर जाएं. आपको 'Google से साइन इन करें' स्क्रीन दिखेगी. इस ऐप्लिकेशन को ऐक्सेस करने के लिए, आपको लॉग इन करना होगा.

Google या G Suite खाते से साइन इन करें. इसके बाद, एक स्क्रीन दिखेगी, जिस पर आप ऐक्सेस नहीं कर पाएंगे.

आपने अपने ऐप्लिकेशन को आईएपी से सुरक्षित कर लिया है, लेकिन आपने अब तक यह नहीं बताया है कि किन खातों से अनुमति देनी है.

कंसोल के पहचान-जागरूक प्रॉक्सी पेज पर वापस जाएं, App Engine ऐप्लिकेशन के आगे का चेकबॉक्स चुनें और पेज के दाईं ओर साइडबार देखें.

हर ईमेल पते (या Google ग्रुप का पता या G Suite डोमेन का नाम) को ऐक्सेस करने की अनुमति होनी चाहिए जिसे सदस्य के तौर पर जोड़ा जाना चाहिए. 'सदस्य जोड़ें' पर क्लिक करें. अपना ईमेल पता डालें. इसके बाद, उस पते को असाइन करने के लिए Cloud IAP/IAP-Secured Web App उपयोगकर्ता की भूमिका चुनें. आप इसी तरह ज़्यादा पते या GSuite डोमेन डाल सकते हैं.

सेव करें पर क्लिक करें. विंडो के नीचे, मैसेज &नीति को अपडेट किया गया&कोटेशन दिखेगा.

अपने ऐप्लिकेशन पर वापस जाएं और पेज को फिर से लोड करें. अब आपको अपना वेब ऐप्लिकेशन दिखना चाहिए, क्योंकि आपने पहले से ही किसी ऐसे उपयोगकर्ता से लॉग इन किया है जिसे आपने अनुमति दी है. हालांकि, आपको अब भी &? ऐसे में, नीचे दिया गया तरीका अपनाएं:

  • https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie की तरह, यूआरएल के आखिर में जोड़े गए /_gcp_iap/clear_login_cookie के ज़रिए, अपने वेब ब्राउज़र को होम पेज के पते पर खोलें.
  • आपको 'Google से साइन इन करें' सुविधा वाली नई स्क्रीन दिखेगी. इस पर आपका खाता पहले से दिख रहा होगा. खाते पर क्लिक न करें. इसके बजाय, 'किसी दूसरे खाते का इस्तेमाल करें' पर क्लिक करें और अपने क्रेडेंशियल फिर से डालें.
  • इन चरणों से आईएपी आपके ऐक्सेस की फिर से जांच करेगा. अब आपको अपने ऐप्लिकेशन की होम स्क्रीन दिखेगी.

अगर आपके पास किसी दूसरे ब्राउज़र का ऐक्सेस है या आप अपने ब्राउज़र में गुप्त मोड का इस्तेमाल कर सकते हैं और आपके पास दूसरा मान्य Jamboard या GSuite खाता है, तो आप अपने ब्राउज़र का इस्तेमाल करके अपने ऐप्लिकेशन पेज पर जाएं और दूसरे खाते से लॉग इन करें. उस खाते की अनुमति नहीं मिली है. इसलिए, इसे आपके ऐप्लिकेशन के बजाय, &'ऐक्सेस नहीं किया गया है" स्क्रीन दिखेगी.

जब कोई ऐप्लिकेशन आईएपी से सुरक्षित होता है, तो वह उस पहचान की जानकारी का इस्तेमाल कर सकता है जो आईएपी ने वेब अनुरोध के हेडर में दी है. इस चरण में, ऐप्लिकेशन को लॉग-इन करने वाले उपयोगकर्ता का ईमेल पता और उपयोगकर्ता को Google Identity सेवा की ओर से असाइन किया गया स्थायी उपयोगकर्ता आईडी मिलेगा. वह डेटा वेलकम पेज में उपयोगकर्ता को दिखाया जाएगा.

यह दूसरा चरण है और आखिरी चरण iap-codelab/1-HelloWorld फ़ोल्डर में आपके क्लाउड शेल के साथ खत्म हुआ. इस चरण के लिए फ़ोल्डर में बदलें:

cd ~/iap-codelab/2-HelloUser

App Engine पर परिनियोजित करें

डिप्लॉयमेंट में कुछ मिनट लगते हैं. इसलिए, Python 3.7 के लिए ऐप्लिकेशन को App Engine Standard एनवायरमेंट में डिप्लॉय करें:

gcloud app deploy

जब आपसे पूछा जाए कि क्या आप जारी रखना चाहते हैं, तो हां के लिए Y डालें. कुछ ही मिनटों में डिप्लॉयमेंट पूरा हो जाएगा. तब तक आप नीचे दी गई जानकारी के मुताबिक ऐप्लिकेशन फ़ाइलों की जांच कर सकते हैं.

जब डिप्लॉयमेंट तैयार होगा, तब आपको एक मैसेज दिखेगा कि आप gcloud app browse के साथ अपना आवेदन देख सकते हैं. वह निर्देश डालें. अगर आपके ब्राउज़र पर कोई नया टैब नहीं खुलता है, तो दिखाए गए लिंक को कॉपी करें और उसे नए टैब में खोलें. आपको निम्न जैसा एक पेज दिखाई देगा:

आपको अपने ऐप्लिकेशन के नए वर्शन को उसके पुराने वर्शन से बदलने में कुछ मिनट लग सकते हैं. ज़रूरत पड़ने पर पेज को रीफ़्रेश करें.

ऐप्लिकेशन फ़ाइलों की जांच करना

इस फ़ोल्डर में फ़ाइलों का वही सेट शामिल है जैसा कि पहले चरण में दिखाया गया था. हालांकि, दो फ़ाइलों में बदलाव किया गया है: main.py और templates/index.html. प्रोग्राम में बदलाव करके, उपयोगकर्ता की जानकारी फिर से पाने का अनुरोध किया गया है. ये जानकारी, अनुरोध के हेडर में दी जाती है. टेंप्लेट अब यह डेटा दिखाता है.

main.py में दो लाइन होती हैं, जिन्हें आईएपी से मिला पहचान डेटा मिलता है:

user_email = request.headers.get('X-Goog-Authenticated-User-Email')
user_id = request.headers.get('X-Goog-Authenticated-User-ID')

X-Goog-Authenticated-User- हेडर, आईएपी से मिलते हैं और नामों पर अंग्रेज़ी के छोटे-बड़े अक्षरों का असर पड़ता है. इसलिए, कम शब्दों में या सभी अपर केस में इनका इस्तेमाल किया जा सकता है. रेंडरिंग_टेंप्लेट स्टेटमेंट में अब वे वैल्यू शामिल की जा सकती हैं, ताकि उन्हें दिखाया जा सके:

page = render_template('index.html', email=user_email, id=user_id)

index.html टेंप्लेट, डबल कर्ली ब्रैकेट में नाम को शामिल करके, उन वैल्यू को दिखा सकता है:

Hello, {{ email }}! Your persistent ID is {{ id }}.

जैसा कि आप देख सकते हैं, दिया गया डेटा, accounts.google.com से शुरू होता है: इससे पता चलता है कि जानकारी कहां से मिली है. अगर आप चाहें, तो आपका ऐप्लिकेशन मूल मान पाने के लिए सभी चीज़ें हटा सकता है. साथ ही, इनमें कोलन भी शामिल हो सकता है.

इन-ऐप्लिकेशन खरीदारी की सुविधा बंद करना

अगर IAP बंद है या किसी और तरीके से इसे बायपास किया गया है (जैसे कि आपके उसी क्लाउड प्रोजेक्ट में चल रहे दूसरे ऐप्लिकेशन) तो इस ऐप्लिकेशन का क्या होगा? देखने के लिए आईएपी बंद करें.

Cloud Console की विंडो में, पेज के सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें. इसके बाद, सुरक्षा पर और फिर पहचान-जागरूक प्रॉक्सी पर क्लिक करें. आईएपी बंद करने के लिए, ऐप्लिकेशन इंजन ऐप्लिकेशन के बगल में मौजूद आईएपी टॉगल पर क्लिक करें.

आपको चेतावनी दी जाएगी कि ऐसा करने पर सभी उपयोगकर्ता, ऐप्लिकेशन को ऐक्सेस कर पाएंगे.

ऐप्लिकेशन का वेब पेज रीफ़्रेश करें. आपको वही पेज दिखाई देना चाहिए, लेकिन उपयोगकर्ता की कोई जानकारी नहीं होनी चाहिए:

ऐप्लिकेशन को सुरक्षित नहीं किया गया है. इसलिए, उपयोगकर्ता ऐसा वेब अनुरोध भेज सकता है जिसे आईएपी से पास किए जाने का अनुरोध किया गया हो. उदाहरण के लिए, आप ऐसा करने के लिए Cloud Shell से यह curl निर्देश चला सकते हैं (<your-url-here> को अपने ऐप्लिकेशन के सही यूआरएल से बदलें):

curl -X GET <your-url-here> -H "X-Goog-Authenticated-User-Email: totally fake email"

वेब पेज कमांड लाइन पर दिखेगा और ऐसा दिखेगा:

<!doctype html>
<html>
<head>
  <title>IAP Hello User</title>
</head>
<body>
  <h1>Hello World</h1>

  <p>
    Hello, totally fake email! Your persistent ID is None.
  </p>

  <p>
    This is step 2 of the <em>User Authentication with IAP</em>
    codelab.
 </p>

</body>
</html>

ऐप्लिकेशन के पास यह जानने का कोई तरीका नहीं है कि IAP को बंद किया गया है या बायपास किया गया है. ऐसे मामलों में जहां संभावित जोखिम है, चरण 3 में एक समाधान दिखाया गया है.

अगर आईएपी बंद होने या इसे बायपास किए जाने का खतरा है, तो आपका ऐप्लिकेशन यह पक्का कर सकता है कि पहचान की पुष्टि करने वाली जानकारी मान्य है या नहीं. यह आईएपी से जोड़े गए तीसरे वेब अनुरोध के हेडर का इस्तेमाल करता है, जिसे X-Goog-IAP-JWT-Assertion कहा जाता है. हेडर का मान क्रिप्टोग्राफ़िक तरीके से हस्ताक्षर किया गया ऑब्जेक्ट है. इसमें उपयोगकर्ता की पहचान से जुड़ा डेटा भी होता है. आपका ऐप्लिकेशन, डिजिटल हस्ताक्षर की पुष्टि कर सकता है. साथ ही, इस ऑब्जेक्ट में दिए गए डेटा का इस्तेमाल करके, यह पक्का कर सकता है कि बिना किसी बदलाव के, आईएपी से मिला है या नहीं.

डिजिटल हस्ताक्षर की पुष्टि करने के लिए कई और चरण पूरे करने होते हैं. जैसे, Google की सार्वजनिक कुंजियों का सबसे नया सेट वापस पाना. आप तय कर सकते हैं कि आपके ऐप्लिकेशन को इन अतिरिक्त चरणों की ज़रूरत होगी या नहीं. जोखिम की संभावना इस बात से तय होती है कि कोई व्यक्ति आईएपी को बंद कर सकता है या बायपास कर सकता है. इसके अलावा, ऐप्लिकेशन की संवेदनशीलता का भी ध्यान रखते हैं.

यह तीसरा चरण है और आखिरी चरण, iap-codelab/2-HelloUser फ़ोल्डर में आपके Cloud Shell से खुला है. इस चरण के लिए फ़ोल्डर में बदलें:

cd ~/iap-codelab/3-HelloVerifiedUser

App Engine पर डिप्लॉय करें

ऐप्लिकेशन को Python 3.7 के लिए ऐप्लिकेशन इंजन के स्टैंडर्ड एनवायरमेंट में डिप्लॉय करें:

gcloud app deploy

जब आपसे पूछा जाए कि क्या आप जारी रखना चाहते हैं, तो हां के लिए Y डालें. कुछ ही मिनटों में डिप्लॉयमेंट पूरा हो जाएगा. तब तक आप नीचे दी गई जानकारी के मुताबिक ऐप्लिकेशन फ़ाइलों की जांच कर सकते हैं.

जब डिप्लॉयमेंट तैयार होगा, तब आपको एक मैसेज दिखेगा कि आप gcloud app browse के साथ अपना आवेदन देख सकते हैं. वह निर्देश डालें. अगर आपके ब्राउज़र पर कोई नया टैब नहीं खुलता है, तो दिखाए गए लिंक को कॉपी करें और उसे नए टैब में खोलें.

याद रखें कि आपने दूसरे चरण में आईएपी बंद किया है, इसलिए ऐप्लिकेशन को कोई आईएपी डेटा नहीं दिया जा रहा है. आपको निम्न जैसा एक पेज दिखाई देगा:

पहले की तरह, पेज का नया वर्शन लाइव देखने के लिए आपको कुछ मिनट इंतज़ार करना पड़ सकता है.

आईएपी बंद होने की वजह से उपयोगकर्ता की कोई जानकारी उपलब्ध नहीं है. अब आईएपी चालू करें.

Cloud Console की विंडो में, पेज के सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें. इसके बाद, सुरक्षा पर और फिर पहचान-जागरूक प्रॉक्सी पर क्लिक करें. आईएपी को फिर से चालू करने के लिए, ऐप्लिकेशन इंजन ऐप्लिकेशन के बगल में मौजूद आईएपी टॉगल पर क्लिक करें.

पेज रीफ़्रेश करें. पेज कुछ ऐसा दिखना चाहिए:

ध्यान दें कि पुष्टि किए गए तरीके से दिए गए ईमेल पते में accounts.google.com: प्रीफ़िक्स नहीं है.

अगर आईएपी बंद है या इसे बायपास किया गया है, तो पुष्टि किया गया डेटा या तो मौजूद नहीं होगा या अमान्य होगा. ऐसा इसलिए है, क्योंकि इसमें तब तक कोई मान्य हस्ताक्षर नहीं हो सकता, जब तक कि इसे Google की निजी कुंजियों के मालिक ने नहीं बनाया हो.

ऐप्लिकेशन फ़ाइलों की जांच करना

इस फ़ोल्डर में फ़ाइलों का वही सेट शामिल है जो दूसरे चरण में दिखता है. इसमें दो फ़ाइलें बदल दी गई हैं और एक नई फ़ाइल. नई फ़ाइल auth.py है, जो क्रिप्टोग्राफ़िक हस्ताक्षर वाली जानकारी पाने और उसकी पुष्टि करने का user() तरीका देती है. बदली गई फ़ाइलें main.py और templates/index.html हैं, जो अब उस तरीके के नतीजों का इस्तेमाल करती हैं. दूसरे चरण में मिले बिना पुष्टि वाले हेडर, तुलना के लिए भी दिखाए जाते हैं.

नई सुविधा मुख्य रूप से user() फ़ंक्शन में है:

def user():
    assertion = request.headers.get('X-Goog-IAP-JWT-Assertion')
    if assertion is None:
        return None, None

    info = jwt.decode(
        assertion,
        keys(),
        algorithms=['ES256'],
        audience=audience()
    )

    return info['email'], info['sub']

assertion, अनुरोध के हेडर में दिया गया क्रिप्टोग्राफ़िक तरीके से हस्ताक्षर किया गया डेटा होता है. कोड, उस डेटा की पुष्टि करने और उसे डिकोड करने के लिए, लाइब्रेरी का इस्तेमाल करता है. पुष्टि करने के लिए सार्वजनिक कुंजी का इस्तेमाल किया जाता है. Google इस डेटा को, साइन इन करने वाले डेटा की जांच करने के लिए इस्तेमाल करता है और डेटा को तैयार करने वाली ऑडियंस के बारे में जानता है. साथ ही, यह Google Cloud का वह प्रोजेक्ट भी होता है जिसे सुरक्षित किया जा रहा है. हेल्पर फ़ंक्शन keys() और audience() उन वैल्यू को इकट्ठा और रिटर्न करते हैं.

साइन किए हुए ऑब्जेक्ट में दो तरह का डेटा होता है: पुष्टि किया गया ईमेल पता और यूनीक आईडी मान (सदस्य, स्टैंडर्ड फ़ील्ड के लिए sub में मौजूद).

इससे तीसरा चरण पूरा हो जाता है.

आपने App Engine वेब ऐप्लिकेशन का इस्तेमाल किया है. चरण 1 में, आपने सिर्फ़ चुने गए उपयोगकर्ताओं के लिए ही ऐप्लिकेशन का ऐक्सेस प्रतिबंधित किया. दूसरे चरण में, आपने उन उपयोगकर्ताओं की पहचान हासिल की और उनकी पहचान की है जिन्हें आईएपी ने आपके ऐप्लिकेशन का ऐक्सेस दिया है. साथ ही, यह भी देखा कि अगर आईएपी बंद है या इसे बायपास किया जाता है, तो वह जानकारी झूठे नाम से भेजी जा सकती है. तीसरे चरण में, आपने उपयोगकर्ता के

इस कोडलैब में सिर्फ़ Google Cloud Platform के संसाधन हैं, जिनका इस्तेमाल आप App Engine इंस्टेंस के तौर पर करते हैं. जब भी आप ऐप्लिकेशन को परिनियोजित करते हैं, तब एक नया वर्शन बनाया जाता है और मिटाए जाने तक मौजूद रहता है. प्रोजेक्ट और उसमें मौजूद सभी संसाधनों को मिटाने के लिए लैब से बाहर निकलें.