इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी
1. परिचय
अपने वेब ऐप्लिकेशन के उपयोगकर्ताओं की पुष्टि करना अक्सर ज़रूरी होता है. साथ ही, आम तौर पर इसके लिए, ऐप्लिकेशन में खास प्रोग्रामिंग की ज़रूरत होती है. Google Cloud Platform ऐप्लिकेशन के लिए, आप उन ज़िम्मेदारियों को Identity-Aware Proxy सेवा को दे सकते हैं. अगर आपको सिर्फ़ चुने हुए उपयोगकर्ताओं तक ऐक्सेस प्रतिबंधित करना है, तो ऐप्लिकेशन में कोई बदलाव करने की ज़रूरत नहीं है. अगर ऐप्लिकेशन को उपयोगकर्ता की पहचान की जानकारी होनी चाहिए (जैसे, उपयोगकर्ता की प्राथमिकताओं को सर्वर-साइड पर रखने के लिए), तो आइडेंटिटी-अवेयर प्रॉक्सी की मदद से, उपयोगकर्ता की पहचान से जुड़ी जानकारी कम से कम ऐप्लिकेशन कोड के साथ दी जा सकती है.
पहचान-जागरूक प्रॉक्सी क्या है?
पहचान-जागरूक प्रॉक्सी (आईएपी), Google Cloud Platform की ऐसी सेवा है जो आपके ऐप्लिकेशन पर भेजे गए वेब अनुरोधों को बीच में रोकती है. साथ ही, Google Identity सेवा का इस्तेमाल करके अनुरोध करने वाले उपयोगकर्ता की पुष्टि करती है. यह सेवा सिर्फ़ तब अनुमति देती है, जब अनुरोध आपकी अनुमति वाले उपयोगकर्ता से आया हो. इसके अलावा, यह पुष्टि किए गए उपयोगकर्ता के बारे में जानकारी शामिल करने के लिए अनुरोध के हेडर में बदलाव कर सकता है.
यह कोडलैब आपको अपना ऐप्लिकेशन बनाने, उसके ऐक्सेस को सीमित करने, और आईएपी से उपयोगकर्ता की पहचान पाने में आपकी मदद करेगा.
आपको क्या बनाना होगा
इस कोडलैब में, Google App Engine की मदद से बहुत कम वेब ऐप्लिकेशन बनाया जा सकता है. इसके बाद, ऐप्लिकेशन का ऐक्सेस रोकने और उसे उपयोगकर्ता की पहचान से जुड़ी जानकारी देने के लिए, पहचान-जागरूक प्रॉक्सी का इस्तेमाल करने के अलग-अलग तरीकों का पता लगाया जाता है. आपका ऐप्लिकेशन ये काम करेगा:
|
आपको इनके बारे में जानकारी मिलेगी
- Python 3.7 का इस्तेमाल करके, एक आसान App Engine ऐप्लिकेशन लिखने और डिप्लॉय करने का तरीका
- अपने ऐप्लिकेशन के ऐक्सेस पर पाबंदी लगाने के लिए, आईएपी (IAP) को चालू और बंद करने का तरीका
- आईएपी से अपने ऐप्लिकेशन में उपयोगकर्ता की पहचान से जुड़ी जानकारी पाने का तरीका
- झूठे नाम से मेल भेजने से बचने के लिए, आईएपी से मिली जानकारी की क्रिप्टोग्राफ़िक तरीके से पुष्टि कैसे करें
आपको इन चीज़ों की ज़रूरत होगी
- Chrome जैसा कोई मॉडर्न वेब ब्राउज़र.
- Python प्रोग्रामिंग लैंग्वेज की बुनियादी जानकारी
यह कोडलैब, Google App Engine और IAP पर फ़ोकस करता है. ऐसे कॉन्सेप्ट और कोड ब्लॉक कर दिए जाते हैं जो काम के नहीं होते. वे आपको दिए जाते हैं, ताकि आप उन्हें आसानी से कॉपी करके चिपका सकें.
2. सेट अप किया जा रहा है
आपका काम क्लाउड शेल कमांड लाइन एनवायरमेंट में होगा. सबसे पहले उस एनवायरमेंट को खोलें और उसमें सैंपल कोड फ़ेच करें.
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 की मदद से सुरक्षित करें
यह Python 3.7 में लिखा गया App Engine स्टैंडर्ड ऐप्लिकेशन है, जो सिर्फ़ "नमस्ते, दुनिया" दिखाता है स्वागत पेज. हम इसे डिप्लॉय और टेस्ट करेंगे. इसके बाद, हम आईएपी का इस्तेमाल करके इसके ऐक्सेस पर पाबंदी लगाएंगे.
ऐप्लिकेशन कोड की समीक्षा करना
मुख्य प्रोजेक्ट फ़ोल्डर की जगह 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 main.py
इसके अलावा, Cloud Shell की विंडो में सबसे ऊपर दाईं ओर मौजूद पेंसिल आइकॉन पर क्लिक करके, क्लाउड शेल कोड एडिटर खोला जा सकता है. इसके बाद, कोड को जांचा जा सकता है.
आपको इस चरण के लिए किसी भी फ़ाइल को बदलने की ज़रूरत नहीं है.
App Engine में डिप्लॉय करें
अब ऐप्लिकेशन को Python 3.7 के लिए, App Engine स्टैंडर्ड एनवायरमेंट में डिप्लॉय करें
gcloud app deploy
आपसे वह क्षेत्र चुनने के लिए कहा जा सकता है जिसमें आपको डिप्लॉय करना है. अपने आस-पास की ऐसी प्रॉपर्टी चुनें जिसमें लिखा हो कि यह " स्टैंडर्ड के मुताबिक है". जब आपसे पूछा जाए कि क्या आप जारी रखना चाहते हैं, तो हां लिखने के लिए Y
डालें.
कुछ ही मिनटों में डिप्लॉयमेंट पूरा हो जाएगा और आपको एक मैसेज दिखेगा कि gcloud app browse
में अपना ऐप्लिकेशन देखा जा सकता है. वह निर्देश डालें. अगर आपके ब्राउज़र में कोई नया टैब नहीं खुलता है, तो प्रदर्शित लिंक पर क्लिक करके उसे नए टैब में खोलें या ज़रूरत पड़ने पर उसे मैन्युअल रूप से खोले गए नए टैब में कॉपी करें. इस ऐप्लिकेशन को पहली बार इस्तेमाल किया जा रहा है. इसलिए, क्लाउड इंस्टेंस के शुरू होने के दौरान, इसे दिखने में कुछ सेकंड लगेंगे. साथ ही, आपको नीचे दी गई विंडो दिखेगी.
आप उसी वेब पेज को देखने के लिए इंटरनेट से कनेक्ट किसी भी कंप्यूटर से वही यूआरएल खोल सकते हैं. ऐक्सेस पर अभी तक पाबंदी नहीं लगाई गई है.
आईएपी की मदद से ऐक्सेस पर पाबंदी लगाना
Cloud Console विंडो में, पेज के सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें. इसके बाद, 'सुरक्षा' और फिर आइडेंटिटी-अवेयर प्रॉक्सी पर क्लिक करें. | |
आपने इस प्रोजेक्ट के लिए पुष्टि करने का विकल्प पहली बार चालू किया है. इसलिए, आपको एक मैसेज दिखेगा कि आईएपी का इस्तेमाल करने से पहले आपको अपनी उस स्क्रीन को कॉन्फ़िगर करना होगा जहां OAuth के लिए सहमति दी जाती है. | |
'सहमति दें' स्क्रीन बटन पर क्लिक करें. सहमति वाली स्क्रीन कॉन्फ़िगर करने के लिए एक नया टैब खुलेगा. |
ज़रूरी खाली जगहों को सही वैल्यू से भरें:
ऐप्लिकेशन का नाम | आईएपी का उदाहरण |
सहायता के लिए ईमेल पता | अपना ईमेल पता डालें. यह आपके लिए पहले से भरा हो सकता है. |
आधिकारिक डोमेन | ऐप्लिकेशन के यूआरएल का होस्टनेम वाला हिस्सा, जैसे कि iap-example-999999.appspot.com. यह आपको आपके उस वेब पेज के पता बार में दिखेगा जिसे आपने पहले खोला था. उस यूआरएल के शुरुआती |
ऐप्लिकेशन के होम पेज का लिंक | अपने ऐप्लिकेशन को देखने के लिए इस्तेमाल किया गया यूआरएल |
ऐप्लिकेशन की निजता नीति का लिंक | ऐप्लिकेशन में निजता पेज का लिंक, जो आखिर में /privacy के साथ होम पेज के लिंक जैसा होता है |
सेव करें पर क्लिक करें. आपको क्रेडेंशियल बनाने के लिए कहा जाएगा. आपको इस कोडलैब के लिए क्रेडेंशियल बनाने की ज़रूरत नहीं है, इसलिए आप बस इस ब्राउज़र टैब को बंद कर सकते हैं.
पहचान-जागरूक प्रॉक्सी पेज पर वापस जाएं और उसे रीफ़्रेश करें. अब आपको उन संसाधनों की एक सूची दिखेगी जिन्हें सुरक्षित किया जा सकता है.IAP को चालू करने के लिए, App Engine ऐप्लिकेशन की लाइन में मौजूद IAP कॉलम में मौजूद टॉगल बटन पर क्लिक करें. | |
आपको वे डोमेन नेम दिखेंगे जिन्हें आईएपी से सुरक्षित किया जाएगा. 'चालू करें' पर क्लिक करें. | |
अब ब्राउज़र टैब खोलें और अपने ऐप्लिकेशन के यूआरएल पर जाएं. आपको 'Google से साइन इन करें' स्क्रीन दिखेगी. इसमें आपको ऐप्लिकेशन ऐक्सेस करने के लिए लॉग इन करना होगा. | |
Google या G Suite खाते से साइन इन करें. आपको एक स्क्रीन दिखेगी, जिसमें आपसे ऐक्सेस देने के लिए कहा जाएगा. |
आपने अपना ऐप्लिकेशन आईएपी (IAP) से सुरक्षित कर लिया है. हालांकि, आपने अब तक यह नहीं बताया है कि आईएपी (IAP) से कौनसे खातों को अनुमति देनी चाहिए.
कंसोल के आइडेंटिटी-अवेयर प्रॉक्सी पेज पर वापस जाएं और App Engine ऐप्लिकेशन के बगल में मौजूद चेकबॉक्स को चुनें. इसके बाद, पेज की दाईं ओर मौजूद साइडबार देखें. | |
जिन ईमेल पते (या Google ग्रुप का पता या G Suite डोमेन नेम) को ऐक्सेस की अनुमति है उन्हें सदस्य के तौर पर जोड़ना होगा. सदस्य को जोड़ें पर क्लिक करें. अपना ईमेल पता डालें. इसके बाद, उस पते को असाइन करने के लिए, Cloud IAP/IAP-Secured Web App User की भूमिका चुनें. आप इसी तरह से और पते या G Suite डोमेन डाल सकते हैं. |
'सेव करें' पर क्लिक करें. "नीति अपडेट की गई" मैसेज विंडो के नीचे दिखाई देगा.
अपने ऐप्लिकेशन पर वापस जाएं और पेज को फिर से लोड करें. अब आपको अपना वेब ऐप्लिकेशन दिखना चाहिए, क्योंकि आपने पहले ही ऐसे उपयोगकर्ता के ज़रिए लॉग इन किया हुआ है जिसे आपने अनुमति दी है. हालांकि, आपको अब भी "आपके पास ऐक्सेस नहीं है" मैसेज दिख सकता है क्योंकि IAP आपके प्राधिकरण की फिर से जांच नहीं कर सकता. ऐसी स्थिति में, यह तरीका अपनाएं:
- अपने वेब ब्राउज़र को उस होम पेज के पते पर खोलें जिसमें यूआरएल के आखिर में
/_gcp_iap/clear_login_cookie
जुड़ा हो, जैसे किhttps://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie
. - आपको 'Google से साइन इन करें' वाली नई स्क्रीन दिखेगी, जिसमें आपका खाता पहले से दिख रहा होगा. खाते पर क्लिक न करें. इसके बजाय, 'किसी दूसरे खाते का इस्तेमाल करें' पर क्लिक करें और अपने क्रेडेंशियल फिर से डालें.
- इन चरणों की वजह से IAP आपके ऐक्सेस की फिर से जांच करेगा और अब आपको अपने ऐप्लिकेशन की होम स्क्रीन दिखेगी.
अगर आपके पास किसी दूसरे ब्राउज़र का ऐक्सेस है या ब्राउज़र में गुप्त मोड का इस्तेमाल किया जा सकता है और आपके पास कोई दूसरा मान्य Gmail या GSuite खाता है, तो उस ब्राउज़र का इस्तेमाल करके अपने ऐप्लिकेशन पेज पर जाएं और दूसरे खाते से लॉग इन करें. उस खाते को अनुमति नहीं दी गई है, इसलिए उसे "आपके पास ऐक्सेस नहीं है" मैसेज दिखेगा स्क्रीन पर दिखेगी.
4. दूसरा चरण - उपयोगकर्ता की पहचान से जुड़ी जानकारी ऐक्सेस करें
ऐप्लिकेशन को आईएपी से सुरक्षित करने के बाद, वह पहचान से जुड़ी उस जानकारी का इस्तेमाल कर सकता है जो आईएपी, वेब अनुरोध के हेडर में पास करता है. इस चरण में, ऐप्लिकेशन को लॉग इन किए हुए उपयोगकर्ता का ईमेल पता और Google Identity सेवा की ओर से असाइन किया गया एक स्थायी यूनीक यूज़र आईडी मिलेगा. वह डेटा उपयोगकर्ता को स्वागत पेज में दिखाया जाएगा.
यह दूसरा चरण है और आखिरी चरण के आखिर में आपका क्लाउड शेल iap-codelab/1-HelloWorld
फ़ोल्डर में खुलता है. इस चरण के लिए फ़ोल्डर बदलें:
cd ~/iap-codelab/2-HelloUser
App Engine में डिप्लॉय करें
डिप्लॉयमेंट में कुछ मिनट लगते हैं, इसलिए ऐप्लिकेशन को Python 3.7 के लिए App Engine स्टैंडर्ड एनवायरमेंट में डिप्लॉय करने से शुरू करें:
gcloud app deploy
जब आपसे पूछा जाए कि क्या आपको जारी रखना है, तो हां के लिए Y डालें. डिप्लॉयमेंट कुछ ही मिनटों में पूरा हो जाना चाहिए. इंतज़ार करते समय, नीचे बताए गए तरीके से ऐप्लिकेशन फ़ाइलों की जांच की जा सकती है.
डिप्लॉयमेंट तैयार होने पर, आपको एक मैसेज दिखेगा कि gcloud app browse
में अपना ऐप्लिकेशन देखा जा सकता है. वह निर्देश डालें. अगर आपके ब्राउज़र पर कोई नया टैब नहीं खुलता है, तो दिखाए गए लिंक को कॉपी करें और उसे सामान्य रूप से नए टैब में खोलें. आपको निम्न जैसा एक पेज दिखाई देगा:
आपके ऐप्स के पिछले वर्शन को बदलने के लिए आपको कुछ मिनट इंतज़ार करना पड़ सकता है. ऊपर दिए गए जैसा कोई पेज देखने के लिए, इस पेज को रीफ़्रेश करें.
ऐप्लिकेशन फ़ाइलों की जांच करें
इस फ़ोल्डर में फ़ाइलों का वही सेट है जो पहले चरण में दिखाया गया था, लेकिन दो फ़ाइलों में बदलाव किया गया है: main.py
और templates/index.html
. इस प्रोग्राम में बदलाव किया गया है, ताकि उपयोगकर्ता की वह जानकारी फिर से हासिल की जा सके जो आईएपी, अनुरोध के हेडर में देता है और टेंप्लेट अब वह डेटा दिखाता है.
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) से मिलते हैं. साथ ही, नाम केस-इनसेंसिटिव होते हैं. इसलिए, अगर आप चाहें, तो इन्हें सभी अपर केस या लोअर केस में इस्तेमाल किया जा सकता है. रेंडर करने के टेंप्लेट में अब ये वैल्यू शामिल होंगी, ताकि उन्हें दिखाया जा सके:
page = render_template('index.html', email=user_email, id=user_id)
इंडेक्स.html टेंप्लेट, इन वैल्यू को डबल कर्ली ब्रैकेट में बंद करके दिखा सकता है:
Hello, {{ email }}! Your persistent ID is {{ id }}.
जैसा कि यहां देखा जा सकता है, दिए गए डेटा के आगे accounts.google.com
जुड़ा होता है: इससे पता चलता है कि जानकारी कहां से मिली है. अगर ज़रूरी हो, तो आपका ऐप्लिकेशन रॉ वैल्यू पाने के लिए, कोलन तक और कोलन तक सब कुछ हटा सकता है.
आईएपी की सुविधा बंद करना
अगर आईएपी बंद हो या किसी तरह इसे बायपास कर दिया जाता हो (जैसे कि आपके एक ही क्लाउड प्रोजेक्ट में चल रहे दूसरे ऐप्लिकेशन से, तो इस ऐप्लिकेशन का क्या होता है)? देखने के लिए आईएपी (IAP) बंद करें.
Cloud Console विंडो में, पेज के सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें. इसके बाद, 'सुरक्षा' और फिर आइडेंटिटी-अवेयर प्रॉक्सी पर क्लिक करें. IAP को बंद करने के लिए, App Engine ऐप्लिकेशन के बगल में मौजूद IAP टॉगल स्विच पर क्लिक करें. |
आपको चेतावनी दी जाएगी कि इससे सभी उपयोगकर्ता इस ऐप्लिकेशन को ऐक्सेस कर पाएंगे.
ऐप्लिकेशन के वेब पेज को रीफ़्रेश करें. आपको वही पेज दिखेगा, लेकिन इसमें उपयोगकर्ता की जानकारी नहीं होनी चाहिए:
ऐप्लिकेशन अब असुरक्षित है. इसलिए, उपयोगकर्ता ऐसा वेब अनुरोध भेज सकता है जो आईएपी से होकर गुज़रता हो. उदाहरण के लिए, ऐसा करने के लिए क्लाउड शेल से नीचे दिए गए कर्ल कमांड को चलाया जा सकता है (<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. तीसरा चरण - क्रिप्टोग्राफ़िक पुष्टि की सुविधा का इस्तेमाल करें
अगर आईएपी के बंद होने या इसे बायपास होने का जोखिम होता है, तो आपके ऐप्लिकेशन की जांच करके यह पक्का किया जा सकता है कि उसे मिलने वाली पहचान से जुड़ी जानकारी मान्य है. इसमें आईएपी की मदद से जोड़े गए, वेब अनुरोध के तीसरे हेडर का इस्तेमाल किया जाता है. इसे X-Goog-IAP-JWT-Assertion
कहते हैं. हेडर की वैल्यू, क्रिप्टोग्राफ़िक तरीके से साइन किया गया ऑब्जेक्ट होता है. इसमें उपयोगकर्ता की पहचान से जुड़ा डेटा भी शामिल होता है. आपका ऐप्लिकेशन, डिजिटल हस्ताक्षर की पुष्टि कर सकता है. साथ ही, इस ऑब्जेक्ट में दिए गए डेटा का इस्तेमाल यह पक्का करने के लिए कर सकता है कि यह डेटा IAP से बिना किसी बदलाव के मिला है.
डिजिटल हस्ताक्षर की पुष्टि करने के लिए, आपको कुछ और चरण पूरे करने पड़ते हैं. जैसे, Google के सार्वजनिक पासकोड के नए सेट को वापस पाना. ऐप्लिकेशन की संवेदनशीलता और आईएपी को बंद करने या बायपास करने के जोखिम के आधार पर, आपके पास यह तय करने का विकल्प होता है कि आपके ऐप्लिकेशन को अतिरिक्त चरण जोड़ने हैं या नहीं.
यह तीसरा चरण है और आखिरी चरण के आखिर में, आपका क्लाउड शेल iap-codelab/2-HelloUser
फ़ोल्डर में खुलता है. इस चरण के लिए फ़ोल्डर बदलें:
cd ~/iap-codelab/3-HelloVerifiedUser
App Engine में डिप्लॉय करें
Python 3.7 के लिए, ऐप्लिकेशन को App Engine स्टैंडर्ड एनवायरमेंट में डिप्लॉय करें:
gcloud app deploy
जब आपसे पूछा जाए कि क्या आपको जारी रखना है, तो हां के लिए Y डालें. डिप्लॉयमेंट कुछ ही मिनटों में पूरा हो जाना चाहिए. इंतज़ार करते समय, नीचे बताए गए तरीके से ऐप्लिकेशन फ़ाइलों की जांच की जा सकती है.
डिप्लॉयमेंट तैयार होने पर, आपको एक मैसेज दिखेगा कि gcloud app browse
में अपना ऐप्लिकेशन देखा जा सकता है. वह निर्देश डालें. अगर आपके ब्राउज़र पर कोई नया टैब नहीं खुलता है, तो दिखाए गए लिंक को कॉपी करें और उसे सामान्य रूप से नए टैब में खोलें.
याद रखें कि आपने दूसरे चरण में आईएपी को बंद किया था, इसलिए ऐप्लिकेशन को आईएपी डेटा नहीं दिया जा रहा. आपको निम्न जैसा एक पेज दिखाई देगा:
पहले की तरह ही, आपको पेज का नया वर्शन देखने के लिए, नए वर्शन के लाइव होने में कुछ मिनट लग सकते हैं.
आईएपी (IAP) बंद होने की वजह से उपयोगकर्ता की कोई जानकारी उपलब्ध नहीं है. अब IAP को फिर से चालू करें.
Cloud Console विंडो में, पेज के सबसे ऊपर बाईं ओर मौजूद मेन्यू आइकॉन पर क्लिक करें. इसके बाद, 'सुरक्षा' और फिर आइडेंटिटी-अवेयर प्रॉक्सी पर क्लिक करें. IAP को फिर से चालू करने के लिए, App Engine ऐप्लिकेशन के बगल में मौजूद IAP टॉगल स्विच पर क्लिक करें. |
पेज रीफ़्रेश करें. पेज ऐसा दिखना चाहिए:
ध्यान दें कि पुष्टि किए गए तरीके से मिले ईमेल पते के प्रीफ़िक्स 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
में दिया गया).
इससे तीसरा चरण पूरा हो जाता है.
6. खास जानकारी
आपने एक App Engine वेब ऐप्लिकेशन डिप्लॉय किया है. आपने पहले चरण में, ऐप्लिकेशन के ऐक्सेस को सिर्फ़ उन लोगों के लिए प्रतिबंधित किया जिन्हें आपने चुना है. दूसरे चरण में, आपने उन उपयोगकर्ताओं की पहचान को वापस पाया और दिखाया जिन्हें आईएपी (IAP) ने आपका ऐप्लिकेशन ऐक्सेस करने की अनुमति दी थी. साथ ही, आपने यह भी देखा कि आईएपी (IAP) को बंद या बायपास करने पर, उस जानकारी के लिए झूठे नाम से भेजे गए मैसेज का इस्तेमाल किस तरह किया जा सकता है. तीसरे चरण में, आपने उपयोगकर्ता की पहचान से जुड़े ऐसे दावों की पुष्टि की जो क्रिप्टोग्राफ़िक तरीके से हस्ताक्षर किए गए हैं. इनकी नकल नहीं की जा सकती.
7. साफ़-सफ़ाई सेवा
इस कोडलैब में, Google Cloud Platform के सिर्फ़ वे संसाधन इस्तेमाल किए जाते हैं जो App Engine के इंस्टेंस हैं. ऐप्लिकेशन को डिप्लॉय करने पर, हर बार एक नया वर्शन बन जाता है. यह वर्शन तब तक मौजूद रहता है, जब तक इसे मिटाया नहीं जाता. प्रोजेक्ट और उसमें मौजूद सभी संसाधनों को मिटाने के लिए, लैब से बाहर निकलें.