১. ভূমিকা
আপনার ওয়েব অ্যাপের ব্যবহারকারীদের প্রমাণীকরণ প্রায়শই প্রয়োজন হয় এবং এর জন্য সাধারণত আপনার অ্যাপে বিশেষ প্রোগ্রামিংয়ের প্রয়োজন হয়। গুগল ক্লাউড প্ল্যাটফর্ম অ্যাপের ক্ষেত্রে আপনি এই দায়িত্বগুলো আইডেন্টিটি-অ্যাওয়ার প্রক্সি সার্ভিসের ওপর অর্পণ করতে পারেন। যদি আপনার শুধু নির্বাচিত ব্যবহারকারীদের জন্য অ্যাক্সেস সীমাবদ্ধ করার প্রয়োজন হয়, তবে অ্যাপ্লিকেশনে কোনো পরিবর্তনের প্রয়োজন নেই। যদি অ্যাপ্লিকেশনটির ব্যবহারকারীর পরিচয় জানার প্রয়োজন হয় (যেমন সার্ভার-সাইডে ব্যবহারকারীর পছন্দগুলো সংরক্ষণের জন্য), তবে আইডেন্টিটি-অ্যাওয়ার প্রক্সি ন্যূনতম অ্যাপ্লিকেশন কোডের মাধ্যমে সেই কাজটি করতে পারে।
আইডেন্টিটি-অ্যাওয়ার প্রক্সি কী?
আইডেন্টিটি-অ্যাওয়ার প্রক্সি (IAP) হলো গুগল ক্লাউড প্ল্যাটফর্মের একটি পরিষেবা, যা আপনার অ্যাপ্লিকেশনে পাঠানো ওয়েব অনুরোধগুলো গ্রহণ করে, গুগল আইডেন্টিটি সার্ভিস ব্যবহার করে অনুরোধকারী ব্যবহারকারীকে প্রমাণীকরণ করে এবং শুধুমাত্র আপনার অনুমোদিত ব্যবহারকারীর কাছ থেকে আসা অনুরোধগুলোকেই অনুমোদন দেয়। এছাড়াও, এটি প্রমাণীকৃত ব্যবহারকারীর তথ্য অন্তর্ভুক্ত করার জন্য অনুরোধের হেডারগুলো পরিবর্তন করতে পারে।
এই কোডল্যাবটি আপনাকে ধাপে ধাপে দেখাবে কীভাবে নিজের অ্যাপ্লিকেশন তৈরি করতে হয়, সেটির অ্যাক্সেস সীমিত করতে হয় এবং IAP থেকে ব্যবহারকারীর পরিচয় সংগ্রহ করতে হয়।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আপনি গুগল অ্যাপ ইঞ্জিন ব্যবহার করে একটি ন্যূনতম ওয়েব অ্যাপ্লিকেশন তৈরি করবেন এবং তারপর অ্যাপ্লিকেশনটিতে অ্যাক্সেস সীমাবদ্ধ করতে ও ব্যবহারকারীর পরিচয় সংক্রান্ত তথ্য সরবরাহ করতে আইডেন্টিটি-অ্যাওয়্যার প্রক্সি ব্যবহারের বিভিন্ন উপায় অন্বেষণ করবেন। আপনার অ্যাপটি যা করবে:
|
|
আপনি যা শিখবেন
- পাইথন ৩.৭ ব্যবহার করে কীভাবে একটি সহজ অ্যাপ ইঞ্জিন অ্যাপ লিখতে এবং স্থাপন করতে হয়
- আপনার অ্যাপে অ্যাক্সেস সীমিত করতে কীভাবে IAP চালু এবং বন্ধ করবেন
- IAP থেকে আপনার অ্যাপে ব্যবহারকারীর পরিচয় তথ্য কীভাবে আনবেন
- স্পুফিং থেকে সুরক্ষার জন্য IAP থেকে প্রাপ্ত তথ্য ক্রিপ্টোগ্রাফিকভাবে কীভাবে যাচাই করবেন
আপনার যা যা লাগবে
- ক্রোমের মতো একটি আধুনিক ওয়েব ব্রাউজার।
- পাইথন প্রোগ্রামিং ভাষার প্রাথমিক জ্ঞান
এই কোডল্যাবটি গুগল অ্যাপ ইঞ্জিন এবং আইএপি (IAP)-এর উপর কেন্দ্র করে তৈরি। অপ্রাসঙ্গিক ধারণা এবং কোড ব্লকগুলো সংক্ষেপে আলোচনা করা হয়েছে এবং এগুলো শুধু কপি-পেস্ট করার জন্য দেওয়া হয়েছে।
২. প্রস্তুতি গ্রহণ
আপনি ক্লাউড শেল কমান্ড লাইন পরিবেশে কাজ করবেন। প্রথমে সেই পরিবেশটি খুলুন এবং এতে নমুনা কোডটি ফেচ করুন।
কনসোল এবং ক্লাউড শেল চালু করুন
ল্যাব পেজের উপরের বাম দিকের অংশে থাকা ‘ওপেন গুগল কনসোল’ বাটনটিতে ক্লিক করুন। ঐ বাটনের নিচে দেখানো ইউজারনেম এবং পাসওয়ার্ড দিয়ে আপনাকে লগ ইন করতে হবে। |
|
এই কোডল্যাবের সমস্ত কমান্ড আপনার জন্য তৈরি ও খোলা প্রজেক্টের একটি ক্লাউড শেলের মধ্যে চালানো হবে। কনসোল পেজ হেডারের ডানদিকে থাকা ‘অ্যাক্টিভেট ক্লাউড শেল’ আইকনে ক্লিক করে ক্লাউড শেলটি খুলুন। পেজের নিচের অংশে আপনি কমান্ড লিখতে ও চালাতে পারবেন। কমান্ডগুলো আপনার নিজের পিসি থেকেও চালানো যেতে পারে, কিন্তু তার জন্য আপনাকে প্রথমে প্রয়োজনীয় ডেভেলপমেন্ট সফটওয়্যার ইনস্টল ও কনফিগার করতে হবে। ক্লাউড শেলে আপনার প্রয়োজনীয় সমস্ত সফটওয়্যার টুল আগে থেকেই রয়েছে। |
|
কোডটি ডাউনলোড করুন
ক্লাউড শেলে কমান্ড লাইন এরিয়াতে ক্লিক করুন যাতে আপনি কমান্ড টাইপ করতে পারেন। গিটহাব থেকে কোডটি নিয়ে আসুন এবং তারপর কোড ফোল্ডারে যান:
git clone https://github.com/googlecodelabs/user-authentication-with-iap.git
cd user-authentication-with-iap
এই ফোল্ডারটিতে এই কোডল্যাবের প্রতিটি ধাপের জন্য একটি করে সাবফোল্ডার রয়েছে। প্রতিটি ধাপ সম্পন্ন করার জন্য আপনাকে সঠিক ফোল্ডারে যেতে হবে।
৩. ধাপ ১ - অ্যাপ্লিকেশনটি স্থাপন করুন এবং IAP দিয়ে এটিকে সুরক্ষিত করুন
এটি পাইথন ৩.৭-এ লেখা একটি অ্যাপ ইঞ্জিন স্ট্যান্ডার্ড অ্যাপ্লিকেশন যা কেবল একটি "হ্যালো, ওয়ার্ল্ড" স্বাগত পৃষ্ঠা প্রদর্শন করে। আমরা এটি ডেপ্লয় ও পরীক্ষা করব, তারপর আইএপি (IAP) ব্যবহার করে এতে প্রবেশাধিকার সীমাবদ্ধ করব।
অ্যাপ্লিকেশন কোডটি পর্যালোচনা করুন
মূল প্রজেক্ট ফোল্ডার থেকে 1-HelloWorld সাবফোল্ডারটিতে যান, যেখানে এই ধাপের কোড রয়েছে।
cd 1-HelloWorld
অ্যাপ্লিকেশন কোডটি main.py ফাইলে রয়েছে। এটি একটি টেমপ্লেটের বিষয়বস্তু দিয়ে ওয়েব অনুরোধের সাড়া দেওয়ার জন্য ফ্লাস্ক ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে। সেই টেমপ্লেট ফাইলটি templates/index.html এ রয়েছে এবং এই ধাপের জন্য এতে শুধুমাত্র সাধারণ এইচটিএমএল (HTML) আছে। দ্বিতীয় একটি টেমপ্লেট ফাইলে templates/privacy.html এ একটি প্রাথমিক উদাহরণমূলক গোপনীয়তা নীতি রয়েছে।
আরও দুটি ফাইল আছে: requirements.txt ফাইলে অ্যাপ্লিকেশনটি দ্বারা ব্যবহৃত সমস্ত নন-ডিফল্ট পাইথন লাইব্রেরির তালিকা থাকে, এবং app.yaml গুগল ক্লাউড প্ল্যাটফর্মকে জানায় যে এটি একটি পাইথন ৩.৭ অ্যাপ ইঞ্জিন অ্যাপ্লিকেশন।
আপনি `cat` কমান্ড ব্যবহার করে শেলের প্রতিটি ফাইলের তালিকা দেখতে পারেন, যেমন:
cat main.py
অথবা আপনি ক্লাউড শেল উইন্ডোর উপরের ডানদিকে থাকা পেন্সিল আইকনে ক্লিক করে ক্লাউড শেল কোড এডিটরটি খুলতে পারেন এবং সেভাবে কোডটি পরীক্ষা করতে পারেন।
এই ধাপের জন্য আপনাকে কোনো ফাইল পরিবর্তন করতে হবে না।
অ্যাপ ইঞ্জিনে স্থাপন করুন
এখন পাইথন ৩.৭-এর জন্য অ্যাপটি অ্যাপ ইঞ্জিন স্ট্যান্ডার্ড এনভায়রনমেন্টে ডেপ্লয় করুন।
gcloud app deploy
আপনাকে ডেপ্লয় করার জন্য একটি অঞ্চল বেছে নিতে বলা হতে পারে। আপনার কাছাকাছি এমন যেকোনো একটি অঞ্চল বেছে নিন যেখানে "স্ট্যান্ডার্ড সমর্থন করে" লেখা আছে। যখন আপনাকে জিজ্ঞাসা করা হবে আপনি চালিয়ে যেতে চান কিনা, তখন হ্যাঁ-এর জন্য Y লিখুন।
কয়েক মিনিটের মধ্যেই ডেপ্লয়মেন্ট সম্পন্ন হয়ে যাবে এবং আপনি একটি বার্তা দেখতে পাবেন যে আপনি gcloud app browse দিয়ে আপনার অ্যাপ্লিকেশনটি দেখতে পারেন। সেই কমান্ডটি প্রবেশ করান। যদি আপনার ব্রাউজারে একটি নতুন ট্যাব না খোলে, তবে প্রদর্শিত লিঙ্কটিতে ক্লিক করে এটিকে একটি নতুন ট্যাবে খুলুন, অথবা প্রয়োজনে এটিকে হাতে খুলে একটি নতুন ট্যাবে কপি করুন। যেহেতু এই অ্যাপটি প্রথমবার চালানো হচ্ছে, তাই একটি ক্লাউড ইনস্ট্যান্স চালু হওয়ার সময় এটি প্রদর্শিত হতে কয়েক সেকেন্ড সময় লাগবে এবং আপনি নিম্নলিখিত উইন্ডোটি দেখতে পাবেন।

আপনি ইন্টারনেট সংযোগযুক্ত যেকোনো কম্পিউটার থেকে সেই একই ইউআরএল খুলে ওয়েব পেজটি দেখতে পারেন। প্রবেশাধিকার এখনও সীমাবদ্ধ করা হয়নি।
IAP দিয়ে অ্যাক্সেস সীমাবদ্ধ করুন
ক্লাউড কনসোল উইন্ডোতে, পেজের উপরের বাম দিকের মেনু আইকনে ক্লিক করুন, Security-তে ক্লিক করুন এবং তারপর Identity-Aware Proxy-তে ক্লিক করুন। |
|
যেহেতু আপনি এই প্রজেক্টের জন্য প্রথমবারের মতো কোনো অথেনটিকেশন অপশন চালু করেছেন, তাই আপনি একটি মেসেজ দেখতে পাবেন যে IAP ব্যবহার করার আগে আপনাকে অবশ্যই আপনার OAuth কনসেন্ট স্ক্রিন কনফিগার করতে হবে। |
|
CONFIGURE CONSENT SCREEN BUTTON-এ ক্লিক করুন। কনসেন্ট স্ক্রিন কনফিগার করার জন্য একটি নতুন ট্যাব খুলবে। |
|
প্রয়োজনীয় শূন্যস্থানগুলিতে উপযুক্ত মান বসান:
আবেদনের নাম | আইএপি উদাহরণ |
সহায়তার ইমেল | আপনার ইমেল ঠিকানা। এটি হয়তো আপনার জন্য আগে থেকেই পূরণ করা থাকবে। |
অনুমোদিত ডোমেইন | অ্যাপ্লিকেশনটির URL-এর হোস্টনেম অংশ, যেমন iap-example-999999.appspot.com। আপনি পূর্বে খোলা 'হ্যালো ওয়ার্ল্ড' ওয়েব পেজটির অ্যাড্রেস বারে এটি দেখতে পাবেন। সেই URL-এর শুরুর |
অ্যাপ্লিকেশন হোমপেজ লিঙ্ক | আপনার অ্যাপ দেখার জন্য ব্যবহৃত URL |
অ্যাপ্লিকেশন গোপনীয়তা নীতি লিঙ্ক | অ্যাপের মধ্যে থাকা প্রাইভেসি পেজের লিঙ্কটি হোমপেজের লিঙ্কের মতোই, শুধু শেষে /privacy যোগ করতে হবে। |
সেভ-এ ক্লিক করুন । আপনাকে ক্রেডেনশিয়াল তৈরি করতে বলা হবে। এই কোডল্যাবের জন্য আপনার ক্রেডেনশিয়াল তৈরি করার প্রয়োজন নেই, তাই আপনি এই ব্রাউজার ট্যাবটি বন্ধ করে দিতে পারেন।
আইডেন্টিটি-অ্যাওয়ার প্রক্সি পেজে ফিরে যান এবং এটি রিফ্রেশ করুন। এখন আপনি সুরক্ষিত করতে পারেন এমন রিসোর্সগুলির একটি তালিকা দেখতে পাবেন। IAP চালু করতে অ্যাপ ইঞ্জিন অ্যাপ সারির IAP কলামে থাকা টগল বোতামে ক্লিক করুন। |
|
আপনি সেই ডোমেইন নামগুলো দেখতে পাবেন যেগুলো IAP দ্বারা সুরক্ষিত থাকবে। TURN ON-এ ক্লিক করুন। |
|
এখন একটি ব্রাউজার ট্যাব খুলুন এবং আপনার অ্যাপের ইউআরএল-এ যান। আপনার সামনে 'সাইন ইন উইথ গুগল' স্ক্রিন আসবে, যেখানে অ্যাপটি অ্যাক্সেস করার জন্য আপনাকে লগ ইন করতে বলা হবে। |
|
একটি গুগল বা জি-স্যুট অ্যাকাউন্ট দিয়ে সাইন ইন করুন। আপনি একটি স্ক্রিন দেখতে পাবেন যেখানে আপনার প্রবেশাধিকার অস্বীকার করা হবে। |
|
আপনি সফলভাবে আপনার অ্যাপটিকে IAP দিয়ে সুরক্ষিত করেছেন, কিন্তু কোন অ্যাকাউন্টগুলোকে অনুমতি দেওয়া হবে তা আপনি এখনও IAP-কে জানাননি।
কনসোলের আইডেন্টিটি-অ্যাওয়ার প্রক্সি পেজে ফিরে যান, অ্যাপ ইঞ্জিন অ্যাপের পাশের চেকবক্সটি সিলেক্ট করুন এবং পেজের ডানদিকের সাইডবারটি দেখুন। |
|
প্রতিটি ইমেল অ্যাড্রেস (বা গুগল গ্রুপ অ্যাড্রেস, বা জি-স্যুট ডোমেইন নেম) যেগুলোকে অ্যাক্সেস দেওয়া প্রয়োজন, সেগুলোকে মেম্বার হিসেবে যুক্ত করতে হবে। অ্যাড মেম্বার (ADD MEMBER) বাটনে ক্লিক করুন। আপনার ইমেল অ্যাড্রেসটি লিখুন, তারপর সেই অ্যাড্রেসটিতে অ্যাসাইন করার জন্য ক্লাউড আইএপি/আইএপি-সিকিউরড ওয়েব অ্যাপ ইউজার রোলটি বেছে নিন। একইভাবে আপনি আরও অ্যাড্রেস বা জি-স্যুট ডোমেইন যোগ করতে পারেন। |
|
সেভ-এ ক্লিক করুন। উইন্ডোর নীচে "পলিসি আপডেট করা হয়েছে" বার্তাটি প্রদর্শিত হবে।
আপনার অ্যাপে ফিরে যান এবং পৃষ্ঠাটি পুনরায় লোড করুন। যেহেতু আপনি ইতিমধ্যেই আপনার অনুমোদিত ব্যবহারকারী দিয়ে লগ ইন করেছেন, তাই এখন আপনি আপনার ওয়েব অ্যাপটি দেখতে পাবেন। তবে, আপনি এখনও "আপনার অ্যাক্সেস নেই" পৃষ্ঠাটি দেখতে পারেন, কারণ IAP আপনার অনুমোদন পুনরায় যাচাই নাও করতে পারে। সেক্ষেত্রে, নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন:
- আপনার ওয়েব ব্রাউজারে হোম পেজের ঠিকানায় যান, যেখানে URL-এর শেষে
/_gcp_iap/clear_login_cookieযোগ করা হয়েছে, যেমন:https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie। - আপনি একটি নতুন 'Sign in with Google' স্ক্রিন দেখতে পাবেন, যেখানে আপনার অ্যাকাউন্টটি আগে থেকেই দেখানো থাকবে। অ্যাকাউন্টটিতে ক্লিক করবেন না। পরিবর্তে, 'Use another account'-এ ক্লিক করুন এবং আপনার লগইন তথ্য পুনরায় প্রবেশ করান।
- এই পদক্ষেপগুলো অনুসরণ করলে IAP আপনার অ্যাক্সেস পুনরায় যাচাই করবে এবং এরপর আপনি আপনার অ্যাপ্লিকেশনের হোম স্ক্রিন দেখতে পাবেন।
যদি আপনার কাছে অন্য কোনো ব্রাউজার থাকে বা আপনি আপনার ব্রাউজারে ইনকগনিটো মোড ব্যবহার করতে পারেন এবং আপনার অন্য একটি বৈধ জিমেইল বা জি-স্যুট অ্যাকাউন্ট থাকে, তাহলে আপনি সেই ব্রাউজারটি ব্যবহার করে আপনার অ্যাপ পেজে যেতে এবং অন্য অ্যাকাউন্টটি দিয়ে লগ ইন করতে পারবেন। যেহেতু সেই অ্যাকাউন্টটি অনুমোদিত নয়, তাই এটি আপনার অ্যাপের পরিবর্তে "আপনার অ্যাক্সেস নেই" স্ক্রিনটি দেখতে পাবে।
৪. ধাপ ২ - ব্যবহারকারীর পরিচয় তথ্য অ্যাক্সেস করুন
কোনো অ্যাপ একবার IAP দ্বারা সুরক্ষিত হয়ে গেলে, এটি তার পাঠানো ওয়েব রিকোয়েস্ট হেডারে IAP-এর দেওয়া পরিচয় সংক্রান্ত তথ্য ব্যবহার করতে পারে। এই ধাপে, অ্যাপ্লিকেশনটি লগ-ইন করা ব্যবহারকারীর ইমেল ঠিকানা এবং গুগল আইডেন্টিটি সার্ভিস দ্বারা সেই ব্যবহারকারীকে বরাদ্দ করা একটি স্থায়ী অনন্য ইউজার আইডি সংগ্রহ করবে। সেই ডেটা ব্যবহারকারীকে স্বাগত পৃষ্ঠায় দেখানো হবে।
এটি ধাপ ২, এবং পূর্ববর্তী ধাপে আপনার ক্লাউড শেলটি iap-codelab/1-HelloWorld ফোল্ডারে খোলা ছিল। এই ধাপের জন্য ফোল্ডারটিতে যান:
cd ~/iap-codelab/2-HelloUser
অ্যাপ ইঞ্জিনে স্থাপন করুন
যেহেতু ডেপ্লয়মেন্টে কয়েক মিনিট সময় লাগে, তাই প্রথমে পাইথন ৩.৭-এর জন্য অ্যাপ ইঞ্জিন স্ট্যান্ডার্ড এনভায়রনমেন্টে অ্যাপটি ডেপ্লয় করুন:
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 বন্ধ করুন।
ক্লাউড কনসোল উইন্ডোতে, পেজের উপরের বাম দিকের মেনু আইকনে ক্লিক করুন, Security-তে ক্লিক করুন এবং তারপর Identity-Aware Proxy-তে ক্লিক করুন। IAP বন্ধ করতে App Engine অ্যাপের পাশের IAP টগল সুইচে ক্লিক করুন। |
|
আপনাকে সতর্ক করা হবে যে এর মাধ্যমে সকল ব্যবহারকারী অ্যাপটি ব্যবহার করতে পারবেন।
অ্যাপ্লিকেশনটির ওয়েব পেজটি রিফ্রেশ করুন। আপনি একই পেজটি দেখতে পাবেন, কিন্তু তাতে কোনো ব্যবহারকারীর তথ্য থাকবে না।

যেহেতু অ্যাপ্লিকেশনটি এখন অসুরক্ষিত, তাই একজন ব্যবহারকারী এমন একটি ওয়েব অনুরোধ পাঠাতে পারেন যা দেখে মনে হবে IAP (ইন-অ্যাপ পারচেজ) এর মাধ্যমে পাঠানো হয়েছে। উদাহরণস্বরূপ, এটি করার জন্য আপনি ক্লাউড শেল থেকে নিম্নলিখিত কার্ল (curl) কমান্ডটি চালাতে পারেন (এখানে <your-url-here> এর জায়গায় আপনার অ্যাপের সঠিক URL বসান):
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 নিষ্ক্রিয় বা বাইপাস করা হয়েছে। যেসব ক্ষেত্রে এটি একটি সম্ভাব্য ঝুঁকি, তার জন্য ধাপ ৩-এ একটি সমাধান দেখানো হয়েছে।
৫. ধাপ ৩ - ক্রিপ্টোগ্রাফিক যাচাইকরণ ব্যবহার করুন
যদি IAP বন্ধ বা বাইপাস হয়ে যাওয়ার ঝুঁকি থাকে, তাহলে আপনার অ্যাপ প্রাপ্ত পরিচয় তথ্য বৈধ কিনা তা যাচাই করে নিতে পারে। এর জন্য IAP দ্বারা যুক্ত করা একটি তৃতীয় ওয়েব রিকোয়েস্ট হেডার ব্যবহার করা হয়, যার নাম X-Goog-IAP-JWT-Assertion । এই হেডারের ভ্যালুটি হলো একটি ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত অবজেক্ট, যাতে ব্যবহারকারীর পরিচয় ডেটাও থাকে। আপনার অ্যাপ্লিকেশনটি ডিজিটাল স্বাক্ষরটি যাচাই করতে পারে এবং এই অবজেক্টে থাকা ডেটা ব্যবহার করে নিশ্চিত হতে পারে যে, এটি কোনো পরিবর্তন ছাড়াই IAP দ্বারা সরবরাহ করা হয়েছে।
ডিজিটাল স্বাক্ষর যাচাইকরণের জন্য কয়েকটি অতিরিক্ত ধাপের প্রয়োজন হয়, যেমন গুগলের পাবলিক কী-এর সর্বশেষ সেট সংগ্রহ করা। কেউ আইএপি (IAP) বন্ধ বা বাইপাস করতে পারার ঝুঁকি এবং অ্যাপ্লিকেশনটির সংবেদনশীলতার উপর ভিত্তি করে আপনি সিদ্ধান্ত নিতে পারেন যে আপনার অ্যাপ্লিকেশনটির জন্য এই অতিরিক্ত ধাপগুলোর প্রয়োজন আছে কি না।
এটি ধাপ ৩, এবং পূর্ববর্তী ধাপে আপনার ক্লাউড শেলটি iap-codelab/2-HelloUser ফোল্ডারে খোলা ছিল। এই ধাপের জন্য ফোল্ডারটিতে যান:
cd ~/iap-codelab/3-HelloVerifiedUser
অ্যাপ ইঞ্জিনে স্থাপন করুন
পাইথন ৩.৭-এর জন্য অ্যাপটি অ্যাপ ইঞ্জিন স্ট্যান্ডার্ড এনভায়রনমেন্টে ডেপ্লয় করুন:
gcloud app deploy
আপনাকে যখন চালিয়ে যেতে বলা হবে, তখন হ্যাঁ-এর জন্য Y চাপুন। কয়েক মিনিটের মধ্যেই ডেপ্লয়মেন্ট সম্পন্ন হয়ে যাবে। অপেক্ষা করার সময় আপনি নিচে বর্ণিত পদ্ধতি অনুযায়ী অ্যাপ্লিকেশন ফাইলগুলো পরীক্ষা করে দেখতে পারেন।
ডেপ্লয়মেন্ট প্রস্তুত হয়ে গেলে আপনি একটি বার্তা দেখতে পাবেন, যেখানে লেখা থাকবে যে আপনি gcloud app browse কমান্ডটি দিয়ে আপনার অ্যাপ্লিকেশনটি দেখতে পারবেন। ওই কমান্ডটি প্রবেশ করান। যদি আপনার ব্রাউজারে নতুন ট্যাব না খোলে, তবে প্রদর্শিত লিঙ্কটি কপি করে স্বাভাবিকভাবে একটি নতুন ট্যাবে খুলুন।
মনে রাখবেন যে আপনি ধাপ ২-এ IAP নিষ্ক্রিয় করেছেন, তাই অ্যাপ্লিকেশনটিতে কোনো IAP ডেটা সরবরাহ করা হচ্ছে না। আপনি নিম্নলিখিতটির মতো একটি পৃষ্ঠা দেখতে পাবেন:

আগের মতোই, পেজটির নতুন সংস্করণ দেখতে সর্বশেষ সংস্করণটি লাইভ হওয়ার জন্য আপনাকে কয়েক মিনিট অপেক্ষা করতে হতে পারে।
আইএপি নিষ্ক্রিয় থাকায় ব্যবহারকারীর কোনো তথ্য পাওয়া যাচ্ছে না। এখন আইএপি আবার চালু করুন।
ক্লাউড কনসোল উইন্ডোতে, পেজের উপরের বাম দিকের মেনু আইকনে ক্লিক করুন, Security-তে ক্লিক করুন এবং তারপর Identity-Aware Proxy-তে ক্লিক করুন। IAP পুনরায় চালু করতে App Engine অ্যাপের পাশের IAP টগল সুইচে ক্লিক করুন। |
|
পৃষ্ঠাটি রিফ্রেশ করুন। পৃষ্ঠাটি দেখতে নিচের মতো হবে:

লক্ষ্য করুন যে, যাচাই পদ্ধতিতে প্রদত্ত ইমেল ঠিকানাটিতে accounts.google.com: উপসর্গটি নেই।
যদি IAP বন্ধ বা বাইপাস করা হয়, তাহলে যাচাইকৃত ডেটা হয় অনুপস্থিত থাকবে, অথবা অবৈধ হবে, কারণ গুগলের প্রাইভেট কী-এর ধারক দ্বারা তৈরি না হলে সেটির কোনো বৈধ স্বাক্ষর থাকতে পারে না।
আবেদনপত্রগুলো পরীক্ষা করুন
এই ফোল্ডারটিতে ধাপ ২-এ দেখা ফাইলগুলোর সেটই রয়েছে, তবে দুটি ফাইল পরিবর্তন করা হয়েছে এবং একটি নতুন ফাইল যোগ করা হয়েছে। নতুন ফাইলটি হলো 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 হলো নির্দিষ্ট রিকোয়েস্ট হেডারে প্রদত্ত ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত ডেটা। কোডটি সেই ডেটা যাচাই এবং ডিকোড করার জন্য একটি লাইব্রেরি ব্যবহার করে। যাচাইকরণের জন্য গুগলের দেওয়া পাবলিক কী ব্যবহার করা হয়, যা দিয়ে স্বাক্ষরিত ডেটা পরীক্ষা করা হয় এবং ডেটাটি কোন অডিয়েন্সের জন্য প্রস্তুত করা হয়েছে তা জানা যায় (মূলত, যে গুগল ক্লাউড প্রজেক্টটি সুরক্ষিত করা হচ্ছে)। হেল্পার ফাংশন keys() এবং audience() সেই ভ্যালুগুলো সংগ্রহ করে এবং রিটার্ন করে।
স্বাক্ষরিত অবজেক্টটিতে আমাদের প্রয়োজনীয় দুটি ডেটা রয়েছে: যাচাইকৃত ইমেল ঠিকানা এবং অনন্য আইডি মান (যা সাবস্ক্রাইবারের জন্য ' sub ' স্ট্যান্ডার্ড ফিল্ডে প্রদান করা হয়)।
এর মাধ্যমে ধাপ ৩ সম্পন্ন হলো।
৬. সারসংক্ষেপ
আপনি একটি অ্যাপ ইঞ্জিন ওয়েব অ্যাপ্লিকেশন স্থাপন করেছেন। ধাপ ১-এ, আপনি শুধুমাত্র আপনার নির্বাচিত ব্যবহারকারীদের জন্য অ্যাপ্লিকেশনটিতে প্রবেশাধিকার সীমাবদ্ধ করেছেন। ধাপ ২-এ, আপনি সেইসব ব্যবহারকারীর পরিচয় পুনরুদ্ধার ও প্রদর্শন করেছেন যাদেরকে IAP আপনার অ্যাপ্লিকেশনে প্রবেশাধিকার দিয়েছে, এবং দেখেছেন যে IAP নিষ্ক্রিয় বা বাইপাস করা হলে সেই তথ্য কীভাবে জাল করা যেতে পারে। ধাপ ৩-এ, আপনি ব্যবহারকারীর পরিচয়ের ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত অ্যাসারশনগুলো যাচাই করেছেন, যা জাল করা যায় না।
৭. পরিচ্ছন্নতা
এই কোডল্যাবে আপনি শুধুমাত্র অ্যাপ ইঞ্জিন ইনস্ট্যান্সগুলোই গুগল ক্লাউড প্ল্যাটফর্ম রিসোর্স হিসেবে ব্যবহার করেছেন। প্রতিবার অ্যাপটি ডিপ্লয় করার সময় একটি নতুন ভার্সন তৈরি হয়েছে এবং ডিলিট না করা পর্যন্ত সেটি বিদ্যমান থাকে। প্রজেক্ট এবং এর ভেতরের সমস্ত রিসোর্স ডিলিট করতে ল্যাব থেকে বেরিয়ে যান।











