1. परिचय
आपके वेब ऐप्लिकेशन के उपयोगकर्ताओं की पुष्टि करना अक्सर ज़रूरी होता है. इसके लिए, आम तौर पर आपके ऐप्लिकेशन में खास प्रोग्रामिंग की ज़रूरत होती है. Google Cloud Platform ऐप्लिकेशन के लिए, इन ज़िम्मेदारियों को Identity-Aware Proxy सेवा को सौंपा जा सकता है. अगर आपको सिर्फ़ कुछ उपयोगकर्ताओं के लिए ऐक्सेस सीमित करना है, तो ऐप्लिकेशन में कोई बदलाव करने की ज़रूरत नहीं है. अगर ऐप्लिकेशन को उपयोगकर्ता की पहचान की जानकारी चाहिए (जैसे, उपयोगकर्ता की प्राथमिकताओं को सर्वर-साइड पर सेव करने के लिए), तो Identity-Aware Proxy, ऐप्लिकेशन के कम से कम कोड के साथ यह जानकारी दे सकता है.
Identity-Aware Proxy क्या है?
Identity-Aware Proxy (IAP), Google Cloud Platform की एक सेवा है. यह आपके ऐप्लिकेशन को भेजे गए वेब अनुरोधों को इंटरसेप्ट करती है. साथ ही, Google Identity Service का इस्तेमाल करके, अनुरोध करने वाले उपयोगकर्ता की पुष्टि करती है. इसके बाद, यह सिर्फ़ उन अनुरोधों को आगे बढ़ने देती है जो आपके अनुमति दिए गए उपयोगकर्ता से आते हैं. इसके अलावा, यह अनुरोध हेडर में बदलाव करके, पुष्टि किए गए उपयोगकर्ता के बारे में जानकारी शामिल कर सकता है.
इस कोडलैब से, आपको अपना ऐप्लिकेशन बनाने, उस पर ऐक्सेस को सीमित करने, और IAP से उपयोगकर्ता की पहचान पाने के बारे में जानकारी मिलेगी.
आपको क्या बनाना है
इस कोडलैब में, Google App Engine की मदद से एक छोटा वेब ऐप्लिकेशन बनाया जाएगा. इसके बाद, ऐप्लिकेशन के ऐक्सेस को सीमित करने और उसे उपयोगकर्ता की पहचान की जानकारी देने के लिए, Identity-Aware Proxy का इस्तेमाल करने के अलग-अलग तरीकों के बारे में बताया जाएगा. आपका ऐप्लिकेशन:
|
|
आपको क्या सीखने को मिलेगा
- Python 3.7 का इस्तेमाल करके, एक सामान्य App Engine ऐप्लिकेशन लिखने और उसे डिप्लॉय करने का तरीका
- अपने ऐप्लिकेशन के ऐक्सेस पर पाबंदी लगाने के लिए, IAP को चालू और बंद करने का तरीका
- IAP से उपयोगकर्ता की पहचान से जुड़ी जानकारी को अपने ऐप्लिकेशन में पाने का तरीका
- झूठे नाम से की गई कार्रवाई से बचने के लिए, IAP से मिली जानकारी की क्रिप्टोग्राफ़िक तरीके से पुष्टि कैसे करें
आपको इन चीज़ों की ज़रूरत होगी
- कोई आधुनिक वेब ब्राउज़र, जैसे कि Chrome.
- Python प्रोग्रामिंग भाषा की बुनियादी जानकारी
यह कोडलैब, Google App Engine और IAP पर फ़ोकस करता है. काम के न होने वाले कॉन्सेप्ट और कोड ब्लॉक को हटा दिया जाता है. साथ ही, आपको सिर्फ़ कॉपी और पेस्ट करने के लिए कॉन्सेप्ट और कोड ब्लॉक दिए जाते हैं.
2. सेट अप करना
आपको Cloud Shell कमांड लाइन एनवायरमेंट में काम करना होगा. उस एनवायरमेंट को खोलें और उसमें सैंपल कोड फ़ेच करें.
Console और Cloud Shell लॉन्च करना
लैब पेज के सबसे ऊपर बाईं ओर, 'Google Console खोलें' बटन पर क्लिक करें. आपको उस बटन के नीचे दिए गए उपयोगकर्ता नाम और पासवर्ड से लॉग इन करना होगा. |
|
इस कोडलैब में मौजूद सभी कमांड, Cloud Shell में उस प्रोजेक्ट के लिए लागू की जाएंगी जिसे आपके लिए बनाया और खोला गया है. कंसोल पेज के हेडर में दाईं ओर मौजूद, Cloud Shell चालू करें आइकॉन पर क्लिक करके Cloud Shell खोलें. पेज के निचले हिस्से में, कमांड डालने और उन्हें चलाने का विकल्प होता है. कमांड को अपने पीसी से चलाया जा सकता है. हालांकि, इसके लिए आपको ज़रूरी डेवलपमेंट सॉफ़्टवेयर को पहले इंस्टॉल और कॉन्फ़िगर करना होगा. Cloud Shell में, आपकी ज़रूरत के सभी सॉफ़्टवेयर टूल पहले से मौजूद होते हैं. |
|
कोड डाउनलोड करें
Cloud Shell में कमांड लाइन वाले एरिया पर क्लिक करें, ताकि निर्देश टाइप किए जा सकें. GitHub से कोड फ़ेच करें. इसके बाद, कोड फ़ोल्डर में जाएं:
git clone https://github.com/googlecodelabs/user-authentication-with-iap.git
cd user-authentication-with-iap
इस फ़ोल्डर में, इस कोडलैब के हर चरण के लिए एक सब-फ़ोल्डर होता है. हर चरण को पूरा करने के लिए, आपको सही फ़ोल्डर पर ले जाया जाएगा.
3. पहला चरण - ऐप्लिकेशन को डिप्लॉय करना और उसे IAP की मदद से सुरक्षित करना
यह App Engine Standard ऐप्लिकेशन, Python 3.7 में लिखा गया है. यह सिर्फ़ "Hello, World" वेलकम पेज दिखाता है. हम इसे डिप्लॉय और टेस्ट करेंगे. इसके बाद, IAP का इस्तेमाल करके इसके ऐक्सेस पर रोक लगा देंगे.
आवेदन कोड की समीक्षा करना
मुख्य प्रोजेक्ट फ़ोल्डर से 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 App Engine ऐप्लिकेशन है.
cat कमांड का इस्तेमाल करके, शेल में मौजूद हर फ़ाइल को इस तरह से लिस्ट किया जा सकता है:
cat main.py
इसके अलावा, Cloud Shell विंडो में सबसे ऊपर दाईं ओर मौजूद, पेंसिल आइकॉन पर क्लिक करके Cloud Shell कोड एडिटर खोला जा सकता है. इससे कोड की जांच की जा सकती है.
इस चरण के लिए, आपको किसी भी फ़ाइल में बदलाव करने की ज़रूरत नहीं है.
App Engine पर डिप्लॉय करना
अब ऐप्लिकेशन को Python 3.7 के लिए, App Engine स्टैंडर्ड एनवायरमेंट में डिप्लॉय करें
gcloud app deploy
आपको यह चुनने के लिए कहा जा सकता है कि आपको किस देश/इलाके में ऐप्लिकेशन को डिप्लॉय करना है. अपने आस-पास मौजूद किसी ऐसे डिवाइस को चुनें जिस पर "स्टैंडर्ड के साथ काम करता है" लिखा हो. जब आपसे पूछा जाए कि क्या आपको जारी रखना है, तो हां के लिए Y डालें.
कुछ मिनटों में, डिप्लॉय करने की प्रोसेस पूरी हो जाएगी. इसके बाद, आपको एक मैसेज दिखेगा. इसमें बताया जाएगा कि gcloud app browse का इस्तेमाल करके, अपने ऐप्लिकेशन को देखा जा सकता है. वह निर्देश डालें. अगर आपके ब्राउज़र में कोई नया टैब नहीं खुलता है, तो उसे नए टैब में खोलने के लिए, दिखाए गए लिंक पर क्लिक करें. इसके अलावा, अगर ज़रूरी हो, तो उसे मैन्युअल तरीके से खोले गए नए टैब में कॉपी करें. यह ऐप्लिकेशन पहली बार चल रहा है. इसलिए, क्लाउड इंस्टेंस शुरू होने के दौरान इसे दिखने में कुछ सेकंड लगेंगे. आपको यह विंडो दिखेगी.

उस वेब पेज को देखने के लिए, इंटरनेट से कनेक्ट किए गए किसी भी कंप्यूटर से उसी यूआरएल को खोला जा सकता है. ऐक्सेस पर अब तक पाबंदी नहीं लगाई गई है.
IAP की मदद से ऐक्सेस पर पाबंदी लगाना
क्लाउड कंसोल विंडो में, पेज के सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें. इसके बाद, सुरक्षा और फिर Identity-Aware Proxy पर क्लिक करें. |
|
आपने इस प्रोजेक्ट के लिए पहली बार पुष्टि करने का कोई विकल्प चालू किया है. इसलिए, आपको एक मैसेज दिखेगा. इसमें बताया जाएगा कि IAP का इस्तेमाल करने से पहले, आपको उस स्क्रीन को कॉन्फ़िगर करना होगा जहां OAuth को सहमति दी जाती है. |
|
'सहमति लेने के लिए स्क्रीन कॉन्फ़िगर करें' बटन पर क्लिक करें. सहमति स्क्रीन को कॉन्फ़िगर करने के लिए, एक नया टैब खुलेगा. |
|
ज़रूरी फ़ील्ड में सही वैल्यू डालें:
ऐप्लिकेशन का नाम | आईएपी का उदाहरण |
सहायता के लिए ईमेल पता | आपका ईमेल पता. यह जानकारी पहले से भरी हुई हो सकती है. |
अनुमति वाला डोमेन | ऐप्लिकेशन के यूआरएल का होस्टनेम वाला हिस्सा, जैसे कि iap-example-999999.appspot.com. इसे उस Hello World वेब पेज के पता बार में देखा जा सकता है जिसे आपने पहले खोला था. उस यूआरएल में मौजूद शुरुआती |
ऐप्लिकेशन के होम पेज का लिंक | वह यूआरएल जिसका इस्तेमाल करके आपने अपना ऐप्लिकेशन देखा था |
ऐप्लिकेशन की निजता नीति का लिंक | ऐप्लिकेशन में निजता पेज का लिंक, होम पेज के लिंक जैसा ही होता है. हालांकि, इसके आखिर में /privacy जोड़ा जाता है |
सेव करें पर क्लिक करें. आपको क्रेडेंशियल बनाने के लिए कहा जाएगा. आपको इस कोडलैब के लिए क्रेडेंशियल बनाने की ज़रूरत नहीं है. इसलिए, इस ब्राउज़र टैब को बंद किया जा सकता है.
Identity-Aware Proxy पेज पर वापस जाएं और उसे रीफ़्रेश करें. अब आपको उन संसाधनों की सूची दिखेगी जिन्हें सुरक्षित किया जा सकता है.IAP की सुविधा चालू करने के लिए, App Engine ऐप्लिकेशन की लाइन में मौजूद IAP कॉलम में, टॉगल बटन पर क्लिक करें. |
|
आपको उन डोमेन के नाम दिखेंगे जिन्हें IAP से सुरक्षित किया जाएगा. 'चालू करें' पर क्लिक करें. |
|
अब ब्राउज़र टैब खोलें और अपने ऐप्लिकेशन के यूआरएल पर जाएं. आपको 'Google से साइन इन करें' स्क्रीन दिखेगी. ऐप्लिकेशन को ऐक्सेस करने के लिए, आपको इसमें लॉग इन करना होगा. |
|
Google या GSuite खाते से साइन इन करें. आपको एक स्क्रीन दिखेगी, जिसमें आपको ऐक्सेस देने से मना किया गया होगा. |
|
आपने IAP की मदद से अपने ऐप्लिकेशन को सुरक्षित कर लिया है. हालांकि, आपने अब तक IAP को यह नहीं बताया है कि किन खातों को ऐप्लिकेशन का ऐक्सेस देना है.
कंसोल के Identity-Aware Proxy पेज पर वापस जाएं. इसके बाद, App Engine ऐप्लिकेशन के बगल में मौजूद चेकबॉक्स को चुनें. अब पेज के दाईं ओर मौजूद साइडबार देखें. |
|
जिस ईमेल पते (या Google ग्रुप के पते या GSuite डोमेन के नाम) को ऐक्सेस की अनुमति देनी है उसे सदस्य के तौर पर जोड़ना होगा. 'सदस्य जोड़ें' पर क्लिक करें. अपना ईमेल पता डालें. इसके बाद, उस पते को असाइन करने के लिए, Cloud IAP/IAP-Secured Web App User की भूमिका चुनें. इसी तरह, ज़्यादा पते या GSuite डोमेन डाले जा सकते हैं. |
|
सेव करें पर क्लिक करें. विंडो में सबसे नीचे, "नीति अपडेट की गई" मैसेज दिखेगा.
अपने ऐप्लिकेशन पर वापस जाएं और पेज को फिर से लोड करें. अब आपको अपना वेब ऐप्लिकेशन दिखना चाहिए, क्योंकि आपने उस उपयोगकर्ता के खाते से लॉग इन किया है जिसे आपने अनुमति दी है. हालांकि, आपको अब भी "आपके पास ऐक्सेस नहीं है" पेज दिख सकता है, क्योंकि IAP आपके अधिकार की दोबारा जांच नहीं कर सकता. ऐसी स्थिति में, यह तरीका अपनाएं:
- अपने वेब ब्राउज़र में होम पेज का पता खोलें. इसके लिए, यूआरएल के आखिर में
/_gcp_iap/clear_login_cookieजोड़ें. जैसे,https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie. - आपको 'Google से साइन इन करें' वाली नई स्क्रीन दिखेगी. इसमें आपका खाता पहले से ही दिखेगा. खाते पर क्लिक न करें. इसके बजाय, 'किसी दूसरे खाते का इस्तेमाल करें' पर क्लिक करें और अपने क्रेडेंशियल फिर से डालें.
- इन चरणों को पूरा करने के बाद, IAP आपके ऐक्सेस की फिर से जांच करेगा. इसके बाद, आपको अपने ऐप्लिकेशन की होम स्क्रीन दिखेगी.
अगर आपके पास किसी दूसरे ब्राउज़र का ऐक्सेस है या अपने ब्राउज़र में गुप्त मोड का इस्तेमाल किया जा सकता है और आपके पास कोई दूसरा मान्य Gmail या GSuite खाता है, तो उस ब्राउज़र का इस्तेमाल करके अपने ऐप्लिकेशन पेज पर जाएं और दूसरे खाते से लॉग इन करें. उस खाते को अनुमति नहीं मिली है. इसलिए, उसे आपका ऐप्लिकेशन नहीं दिखेगा. इसके बजाय, उसे "आपके पास ऐक्सेस नहीं है" स्क्रीन दिखेगी.
4. दूसरा चरण - उपयोगकर्ता की पहचान से जुड़ी जानकारी ऐक्सेस करना
IAP की मदद से किसी ऐप्लिकेशन को सुरक्षित करने के बाद, वह उस पहचान की जानकारी का इस्तेमाल कर सकता है जो IAP, वेब अनुरोध हेडर में देता है. इस चरण में, ऐप्लिकेशन को लॉग-इन किए गए उपयोगकर्ता का ईमेल पता मिलेगा. साथ ही, Google Identity Service की ओर से उस उपयोगकर्ता को असाइन किया गया एक यूनीक आईडी मिलेगा. यह डेटा, उपयोगकर्ता को वेलकम पेज पर दिखेगा.
यह दूसरा चरण है. पिछले चरण में, iap-codelab/1-HelloWorld फ़ोल्डर में Cloud Shell खुला था. इस चरण के लिए फ़ोल्डर बदलें:
cd ~/iap-codelab/2-HelloUser
App Engine में डिप्लॉय करना
डिप्लॉयमेंट में कुछ मिनट लगते हैं. इसलिए, Python 3.7 के लिए App Engine स्टैंडर्ड एनवायरमेंट में ऐप्लिकेशन डिप्लॉय करें:
gcloud app deploy
जब आपसे पूछा जाए कि क्या आपको जारी रखना है, तो हां के लिए Y डालें. कुछ ही मिनटों में, डिप्लॉयमेंट पूरा हो जाएगा. जब तक आपको जवाब नहीं मिलता, तब तक यहां बताए गए तरीके से आवेदन की फ़ाइलों की जांच की जा सकती है.
जब डिप्लॉयमेंट पूरा हो जाएगा, तब आपको एक मैसेज दिखेगा. इसमें बताया जाएगा कि gcloud app browse की मदद से, अपने ऐप्लिकेशन को देखा जा सकता है. वह निर्देश डालें. अगर आपके ब्राउज़र पर कोई नया टैब नहीं खुलता है, तो दिखाए गए लिंक को कॉपी करें और उसे सामान्य तरीके से नए टैब में खोलें. आपको कुछ ऐसा पेज दिखेगा:

ऐप्लिकेशन के नए वर्शन को पुराने वर्शन की जगह लेने में कुछ मिनट लग सकते हैं. अगर आपको ऊपर दिए गए पेज जैसा पेज देखना है, तो पेज को रीफ़्रेश करें.
ऐप्लिकेशन की फ़ाइलों की जांच करना
इस फ़ोल्डर में, पहले चरण में देखी गई फ़ाइलों का वही सेट है. हालांकि, इनमें से दो फ़ाइलों में बदलाव किया गया है: main.py और templates/index.html. प्रोग्राम में बदलाव किया गया है, ताकि उपयोगकर्ता की वह जानकारी हासिल की जा सके जो IAP, अनुरोध के हेडर में देता है. साथ ही, अब टेम्पलेट में वह डेटा दिखता है.
main.py में दो लाइनें हैं, जो IAP से मिले पहचान डेटा को हासिल करती हैं:
user_email = request.headers.get('X-Goog-Authenticated-User-Email')
user_id = request.headers.get('X-Goog-Authenticated-User-ID')
X-Goog-Authenticated-User- हेडर, IAP उपलब्ध कराता है. इनके नाम केस-इनसेंसिटिव होते हैं. इसलिए, इन्हें छोटे या बड़े अक्षरों में दिया जा सकता है. render_template स्टेटमेंट में अब ये वैल्यू शामिल हैं, ताकि इन्हें दिखाया जा सके:
page = render_template('index.html', email=user_email, id=user_id)
index.html टेंप्लेट, उन वैल्यू को दिखा सकता है. इसके लिए, नामों को दोहरे घुमावदार ब्रैकेट में रखना होगा:
Hello, {{ email }}! Your persistent ID is {{ id }}.
जैसा कि आप देख सकते हैं, दिए गए डेटा के पहले accounts.google.com: लिखा है. इससे पता चलता है कि यह जानकारी कहां से मिली है. अगर चाहें, तो आपका ऐप्लिकेशन, कोलन तक की सभी वैल्यू हटा सकता है.
IAP बंद करना
अगर IAP बंद कर दिया जाता है या किसी तरह से इसे बायपास कर दिया जाता है (जैसे कि आपके एक ही क्लाउड प्रोजेक्ट में चल रहे अन्य ऐप्लिकेशन), तो इस ऐप्लिकेशन का क्या होगा? इसे देखने के लिए, IAP बंद करें.
क्लाउड कंसोल विंडो में, पेज के सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें. इसके बाद, सुरक्षा और फिर Identity-Aware Proxy पर क्लिक करें. IAP की सुविधा बंद करने के लिए, App Engine ऐप्लिकेशन के बगल में मौजूद IAP टॉगल स्विच पर क्लिक करें. |
|
आपको चेतावनी दी जाएगी कि इससे सभी उपयोगकर्ता ऐप्लिकेशन को ऐक्सेस कर पाएंगे.
ऐप्लिकेशन के वेब पेज को रीफ़्रेश करें. आपको वही पेज दिखेगा, लेकिन इसमें उपयोगकर्ता की कोई जानकारी नहीं होगी:

ऐप्लिकेशन अब सुरक्षित नहीं है. इसलिए, कोई उपयोगकर्ता ऐसा वेब अनुरोध भेज सकता है जो IAP से पास हो गया हो. उदाहरण के लिए, ऐसा करने के लिए Cloud Shell से यह कर्ल कमांड चलाएं. <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 की सुविधा बंद कर दी गई है या इसे बायपास कर दिया गया है. जिन मामलों में यह संभावित जोखिम होता है उनके लिए, तीसरे चरण में समाधान बताया गया है.
5. तीसरा चरण - क्रिप्टोग्राफ़िक पुष्टि का इस्तेमाल करना
अगर IAP को बंद करने या बायपास करने का जोखिम है, तो आपका ऐप्लिकेशन यह जांच कर सकता है कि उसे मिली पहचान की जानकारी मान्य है या नहीं. यह IAP की ओर से जोड़े गए तीसरे वेब अनुरोध हेडर का इस्तेमाल करता है. इसे X-Goog-IAP-JWT-Assertion कहा जाता है. हेडर की वैल्यू, क्रिप्टोग्राफ़िक तरीके से साइन किया गया ऑब्जेक्ट होती है. इसमें उपयोगकर्ता की पहचान से जुड़ा डेटा भी शामिल होता है. आपका ऐप्लिकेशन, डिजिटल हस्ताक्षर की पुष्टि कर सकता है. साथ ही, इस ऑब्जेक्ट में दिए गए डेटा का इस्तेमाल करके यह पक्का कर सकता है कि इसे IAP ने बिना किसी बदलाव के उपलब्ध कराया है.
डिजिटल हस्ताक्षर की पुष्टि करने के लिए, कई अतिरिक्त चरणों को पूरा करना पड़ता है. जैसे, Google की सार्वजनिक कुंजियों का नया सेट वापस पाना. आपके पास यह तय करने का विकल्प है कि आपके ऐप्लिकेशन को इन अतिरिक्त चरणों की ज़रूरत है या नहीं. यह इस बात पर निर्भर करता है कि कोई व्यक्ति आईएपी को बंद कर सकता है या इसे बायपास कर सकता है. साथ ही, यह ऐप्लिकेशन की संवेदनशीलता पर भी निर्भर करता है.
यह तीसरा चरण है. पिछले चरण में, iap-codelab/2-HelloUser फ़ोल्डर में Cloud Shell खुला था. इस चरण के लिए फ़ोल्डर बदलें:
cd ~/iap-codelab/3-HelloVerifiedUser
App Engine पर डिप्लॉय करना
ऐप्लिकेशन को Python 3.7 के लिए, App Engine स्टैंडर्ड एनवायरमेंट में डिप्लॉय करें:
gcloud app deploy
जब आपसे पूछा जाए कि क्या आपको जारी रखना है, तो हां के लिए Y डालें. कुछ ही मिनटों में, डिप्लॉयमेंट पूरा हो जाएगा. जब तक आपको जवाब नहीं मिलता, तब तक यहां बताए गए तरीके से आवेदन की फ़ाइलों की जांच की जा सकती है.
जब डिप्लॉयमेंट पूरा हो जाएगा, तब आपको एक मैसेज दिखेगा. इसमें बताया जाएगा कि gcloud app browse की मदद से, अपने ऐप्लिकेशन को देखा जा सकता है. वह निर्देश डालें. अगर आपके ब्राउज़र पर कोई नया टैब नहीं खुलता है, तो दिखाए गए लिंक को कॉपी करें और उसे सामान्य तरीके से नए टैब में खोलें.
याद रखें कि आपने दूसरे चरण में IAP की सुविधा बंद कर दी थी. इसलिए, ऐप्लिकेशन को IAP का कोई डेटा नहीं दिया जा रहा है. आपको कुछ ऐसा पेज दिखेगा:

पहले की तरह, पेज का नया वर्शन देखने के लिए, आपको कुछ मिनट इंतज़ार करना पड़ सकता है.
IAP बंद होने की वजह से, उपयोगकर्ता की कोई जानकारी उपलब्ध नहीं है. अब IAP को फिर से चालू करें.
क्लाउड कंसोल विंडो में, पेज के सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें. इसके बाद, सुरक्षा और फिर Identity-Aware Proxy पर क्लिक करें. App Engine ऐप्लिकेशन के बगल में मौजूद IAP टॉगल स्विच पर क्लिक करके, IAP को फिर से चालू करें. |
|
पेज रीफ़्रेश करें. पेज कुछ इस तरह दिखना चाहिए:

ध्यान दें कि पुष्टि किए गए तरीके से दिए गए ईमेल पते में accounts.google.com: प्रीफ़िक्स नहीं है.
अगर IAP की सुविधा बंद है या इसे बायपास किया गया है, तो पुष्टि किया गया डेटा मौजूद नहीं होगा या अमान्य होगा. ऐसा इसलिए, क्योंकि जब तक इसे Google की निजी कुंजियों के मालिक ने नहीं बनाया है, तब तक इसमें मान्य हस्ताक्षर नहीं हो सकता.
ऐप्लिकेशन की फ़ाइलों की जांच करना
इस फ़ोल्डर में, चरण 2 में मौजूद फ़ाइलों का वही सेट है. हालांकि, इसमें दो फ़ाइलों में बदलाव किया गया है और एक नई फ़ाइल जोड़ी गई है. नई फ़ाइल auth.py है. यह क्रिप्टोग्राफ़िक तरीके से हस्ताक्षर की गई पहचान की जानकारी को वापस पाने और उसकी पुष्टि करने का user() तरीका उपलब्ध कराती है. बदली गई फ़ाइलें main.py और templates/index.html हैं. अब ये फ़ाइलें, उस तरीके के नतीजों का इस्तेमाल करती हैं. तुलना करने के लिए, चरण 2 में मिले बिना पुष्टि किए गए हेडर भी दिखाए जाते हैं.
नई सुविधा मुख्य तौर पर 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 में दी जाती है.
इससे तीसरा चरण पूरा हो जाता है.
6. खास जानकारी
आपने App Engine वेब ऐप्लिकेशन को डिप्लॉय किया हो. पहले चरण में, आपने ऐप्लिकेशन का ऐक्सेस सिर्फ़ उन उपयोगकर्ताओं के लिए सीमित किया था जिन्हें आपने चुना था. दूसरे चरण में, आपने उन उपयोगकर्ताओं की पहचान को वापस पाया और दिखाया जिन्हें IAP ने आपके ऐप्लिकेशन को ऐक्सेस करने की अनुमति दी थी. साथ ही, आपने देखा कि अगर IAP को बंद कर दिया जाता है या इसे बायपास कर दिया जाता है, तो उस जानकारी को कैसे स्पूफ़ किया जा सकता है. तीसरे चरण में, आपने उपयोगकर्ता की पहचान की क्रिप्टोग्राफ़िक तरीके से हस्ताक्षर की गई पुष्टि की. इसकी नकल नहीं की जा सकती.
7. साफ़-सफ़ाई सेवा
आपने इस कोडलैब में, Google Cloud Platform के सिर्फ़ App Engine इंस्टेंस का इस्तेमाल किया है. ऐप्लिकेशन को डिप्लॉय करने पर, हर बार एक नया वर्शन बनता है. यह तब तक मौजूद रहता है, जब तक इसे मिटाया नहीं जाता. प्रोजेक्ट और उसमें मौजूद सभी संसाधनों को मिटाने के लिए, लैब से बाहर निकलें.











