এই নির্দেশিকাটি এমন কিছু বৈশিষ্ট্যের বর্ণনা দেয় যা একটি গুগল অ্যাকাউন্ট সম্পর্কে অতিরিক্ত বিশ্বাসযোগ্যতার সংকেত প্রদান করে। এই বিশ্বাসযোগ্যতার সংকেতগুলো আপনার অ্যাকাউন্ট ম্যানেজমেন্ট সিস্টেমকে সাইন আপ, অ্যাকাউন্ট তৈরি এবং পরবর্তীতে ফিরে আসা ব্যবহারকারীদের জন্য ঝুঁকি-ভিত্তিক সিদ্ধান্ত নিতে সাহায্য করে।
অধিবেশন
কোনো অ্যাপ্লিকেশনের প্রমাণীকরণ অনুরোধ একটি আইডি টোকেন ফেরত দেয়। উদাহরণস্বরূপ, যখন ‘Sign in with Google’ বোতামটি চাপ দেওয়া হয়, তখন বোতামটি প্রদর্শনকারী অ্যান্ড্রয়েড, আইওএস বা ওয়েব ক্লায়েন্ট বা সার্ভার অ্যাপ্লিকেশনে একটি আইডি টোকেন ফেরত পাঠানো হয়।
গুগল অ্যাকাউন্টে সাইন-ইন করার জন্য প্রমাণীকরণ একটি স্বতন্ত্র ও পৃথক ঘটনা। আইডি টোকেনে প্রাপ্ত ক্লেইমগুলো এই ঘটনাটিকে উপস্থাপন করে। উদাহরণস্বরূপ, গুগল অ্যাকাউন্টে সাইন-ইন করার জন্য ব্যবহৃত প্রমাণীকরণের সময় এবং পদ্ধতিগুলো।
দুটি প্রমাণীকরণ মুহূর্ত এবং দুটি ব্যবহারকারী সেশন রয়েছে:
- যখন কোনো ব্যবহারকারী তার গুগল অ্যাকাউন্টে সাইন ইন করেন, তখন ব্যবহারকারী <-> গুগল সেশনটি স্থাপিত হয়। গুগল এই সেশনের জীবনচক্র এবং নিরাপত্তা পরিচালনা করে।
auth_timeএবংamrক্লেইমগুলো আপনাকে এই সেশন সম্পর্কে অন্তর্দৃষ্টি প্রদান করে। - ব্যবহারকারী <-> আপনার অ্যাপ্লিকেশন সেশনটি প্রতিষ্ঠিত হয় যখন ব্যবহারকারী আপনার অ্যাপ্লিকেশনে সাইন ইন করেন, যা প্রায়শই 'সাইন ইন উইথ গুগল' ব্যবহার করে শুরু করা হয়। আপনার অ্যাপ্লিকেশন সেশন এবং অ্যাকাউন্ট ব্যবস্থাপনার সিদ্ধান্ত উন্নত করার জন্য ক্লেইম ব্যবহার করে এই সেশনটি পরিচালনা করে।
ব্যবহারকারীরা প্রায়শই ফোন, ডেস্কটপ কম্পিউটার, স্মার্ট ডিসপ্লে বা টিভির মতো একাধিক ডিভাইসে গুগল পরিষেবা ব্যবহার করেন। প্রতিটি প্ল্যাটফর্ম বা ডিভাইসে সাইন ইন করলে একটি স্বতন্ত্র সেশন তৈরি হয়। ওয়েব সাইন-ইনের ক্ষেত্রে, নির্দিষ্ট ব্রাউজার এবং গুগলের মধ্যে একটি সেশন স্থাপিত হয়; উল্লেখ্য যে, প্রাইভেট ব্রাউজিং এবং ইনকগনিটো মোড তাদের নিজস্ব পৃথক, বিচ্ছিন্ন সেশন তৈরি করে। এই কারণে, একটিমাত্র গুগল অ্যাকাউন্টের অধীনে বিভিন্ন ব্রাউজার এবং ডিভাইসে একই সাথে একাধিক স্বতন্ত্র সেশন সক্রিয় থাকতে পারে। অতিরিক্ত বিবরণের জন্য, ‘অ্যাকাউন্ট অ্যাক্সেস সহ ডিভাইসগুলি দেখুন’ অংশটি দেখুন।
গুগল অ্যাকাউন্টের অবস্থা
একটি গুগল অ্যাকাউন্টের জীবনচক্রের সাধারণ ঘটনাগুলো হলো:
- একজন ব্যক্তি একটি গুগল অ্যাকাউন্ট তৈরি করতে চাইলে, তারপর
- গুগল অ্যাকাউন্টটি নিষ্ক্রিয় করে দিতে পারে অথবা কোনো ব্যবহারকারী 'আপনার গুগল অ্যাকাউন্ট বা জিমেইল কীভাবে পুনরুদ্ধার করবেন' নির্দেশিকা অনুসরণ করে সেটি পুনরায় সক্রিয় করতে পারেন, এবং
- কোনো ব্যক্তি নিজের গুগল অ্যাকাউন্ট মুছে ফেলার সিদ্ধান্ত নিতে পারেন অথবা নিষ্ক্রিয় গুগল অ্যাকাউন্ট নীতির কারণে গুগল অ্যাকাউন্টটি মুছে দিতে পারে।
এই নির্দেশিকায় বর্ণিত সিকিউরিটি বান্ডেলের বৈশিষ্ট্যগুলি সক্রিয় বা নিষ্ক্রিয় অ্যাকাউন্টের ক্ষেত্রে প্রযোজ্য, কিন্তু গুগল অ্যাকাউন্ট তৈরি বা মুছে ফেলার ক্ষেত্রে প্রযোজ্য নয়।
গুগল যেকোনো সময় একটি অ্যাকাউন্ট নিষ্ক্রিয় করতে পারে, যার কিছু কারণ জানতে 'আপনার অ্যাকাউন্ট নিষ্ক্রিয় করা হয়েছে ' দেখুন। যখন এটি ঘটে, তখন যেকোনো সক্রিয় গুগল সেশন বন্ধ করে দেওয়া হয় এবং গুগলের ক্রস-অ্যাকাউন্ট প্রোটেকশন পরিষেবা দ্বারা একটি RISC ইভেন্ট পাঠানো হয়। নিষ্ক্রিয় অ্যাকাউন্টগুলো 'গুগল দিয়ে সাইন ইন' ব্যবহার করতে পারে না, যার অর্থ হলো কোনো আইডি টোকেন ইস্যু করা হয় না এবং তাই নিষ্ক্রিয় ব্যবহারকারী অ্যাকাউন্টগুলো নিরীক্ষণের জন্য এটি ব্যবহার করা যায় না।
ক্রস-অ্যাকাউন্ট প্রোটেকশন (RISC) ইভেন্ট গ্রহণ করা ঐচ্ছিক হলেও, এই ইভেন্টগুলো ব্যবহারকারী এবং আপনার অ্যাপের মধ্যেকার সেশন পরিচালনা করার জন্য গুরুত্বপূর্ণ সংকেত হিসেবে কাজ করে। কীভাবে RISC প্রয়োগ করতে হয় এবং ইভেন্টগুলোতে সাড়া দিতে হয়, তার নির্দেশাবলী "ক্রস-অ্যাকাউন্ট প্রোটেকশন দিয়ে ব্যবহারকারীর অ্যাকাউন্ট সুরক্ষিত করুন" অংশে বর্ণনা করা হয়েছে।
সেটআপ
অতিরিক্ত ক্লেইম পেতে হলে আপনার অ্যাপটি পাবলিশড, ভেরিফাইড এবং সিকিউরিটি বান্ডেল ফিচারগুলো এনাবল করা থাকতে হবে। প্রথমে আপনার অ্যাপটি পাবলিশড এবং ভেরিফাইড কিনা তা নিশ্চিত করুন:
- গুগল প্রমাণীকরণ প্ল্যাটফর্ম খুলুন
- আপনার অ্যাপের জন্য প্রজেক্টটি নির্বাচন করুন বা তৈরি করুন
- অডিয়েন্স-এ ক্লিক করুন এবং পাবলিশিং স্ট্যাটাস ' ইন প্রোডাকশন' আছে কিনা তা নিশ্চিত করুন।
- ভেরিফিকেশন সেন্টারে ক্লিক করুন এবং ভেরিফিকেশন স্ট্যাটাস ' ভেরিফায়েড' আছে কিনা তা নিশ্চিত করুন।
এরপরে, অতিরিক্ত দাবিগুলি সক্রিয় করুন:
- মেনুতে সেটিংস- এ ক্লিক করুন
- উন্নত সেটিংসের অধীনে নির্বাচন করুন:
- সেশনের বয়স
auth_timeসক্ষম করার দাবি করে। - প্রমাণীকরণ শক্তির দাবি
amrসক্ষম করার জন্য
- সেশনের বয়স
আরও জানতে, OAuth অ্যাপ যাচাইকরণ সহায়তা কেন্দ্র দেখুন।
সমর্থিত বৈশিষ্ট্য
এই বিভাগে সিকিউরিটি বান্ডেল গঠনকারী স্বতন্ত্র বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।
প্রমাণীকরণ পদ্ধতির তথ্যসূত্র
Authentication Methods References ( amr ) হলো একটি OpenID Connect ক্লেইম যা ব্যবহারকারী এবং Google-এর মধ্যে সর্বশেষ প্রমাণীকরণ ইভেন্টের সময় ব্যবহৃত পদ্ধতিগুলো বর্ণনা করে।
সম্ভাব্য IANA.AMR মানগুলো থেকে গুগল নিম্নলিখিত মানগুলোকে সমর্থন করে, যা নির্দেশ করে যে:
-
hwkনিরাপত্তা কী ব্যবহার করা হয়েছিল -
mfaমাল্টি-ফ্যাক্টর অথেন্টিকেশন সম্পন্ন হয়েছে -
pwdএকটি পাসওয়ার্ড ব্যবহার করা হয়েছিল -
swkঅর্থাৎ পাসকী-এর মতো একটি সফ্টওয়্যার কী ব্যবহার করা হয়েছিল। - যাচাইকরণের জন্য একটি এসএমএস বার্তা ব্যবহার করা হয়েছিল
sms - যাচাইয়ের জন্য একটি ফোন কল ব্যবহার করা হয়েছিল
tel
এই মানগুলির এক বা একাধিক, amr আইডি টোকেন ক্লেইমের মধ্যে স্ট্রিং-এর একটি JSON অ্যারে হিসাবে ফেরত দেওয়া হয়।
ব্যবহৃত প্রমাণীকরণ পদ্ধতি সম্পর্কে তথ্য উপলব্ধ থাকলেই কেবল amr ' ক্লেইমটি আইডি টোকেনে অন্তর্ভুক্ত করা হয়; অনুরোধ করা হলেও এটি উপস্থিত নাও থাকতে পারে।
গুগল অ্যাকাউন্টের মালিকরা 2SV বাধ্যতামূলক করতে এবং কোন MFA পদ্ধতি ব্যবহার করবেন তা বেছে নিতে পারেন। যখন কোনো গুগল অ্যাকাউন্টে অ্যাডভান্সড প্রোটেকশন চালু করা হয়, তখন টাইটান সিকিউরিটি কী ( hwk ) বা পাসকী ( swk )-এর মতো একটি শক্তিশালী 2SV পদ্ধতি আবশ্যক হয়। উভয় ক্ষেত্রেই, গুগল অ্যাকাউন্টে সাইন-ইন করার সময় একাধিক ফ্যাক্টর ব্যবহার করা হলে mfa ভ্যালুটি উপস্থিত থাকে।
mfa এর উপস্থিতি নিশ্চিত করে যে প্রমাণীকরণ প্রক্রিয়াটি মাল্টি-ফ্যাক্টর অথেনটিকেশনের জন্য গুগলের প্রয়োজনীয়তা পূরণ করেছে। উদাহরণস্বরূপ, একটি পাসওয়ার্ড ( pwd ) এবং একটি পাসকি ( swk ) দিয়ে একটি গুগল অ্যাকাউন্ট প্রমাণীকরণের ফলে এই ক্লেইম "amr": ["mfa", "pwd", "swk"] তৈরি হয়।
অ্যাকাউন্ট নিরাপত্তা এবং ব্যবহারকারী প্রমাণীকরণ সম্পর্কে এই রিসোর্সগুলিতে আরও তথ্য রয়েছে: অ্যাডভান্সড প্রোটেকশন প্রোগ্রামের মাধ্যমে গুগলের সবচেয়ে শক্তিশালী অ্যাকাউন্ট নিরাপত্তা পান , পাসওয়ার্ডের পরিবর্তে পাসকি দিয়ে সাইন ইন করুন , এবং ২-ধাপ যাচাইকরণের জন্য একটি নিরাপত্তা কী ব্যবহার করুন ।
ওয়ার্কস্পেস অ্যাডমিনরা পরিচালিত ওয়ার্কস্পেস অ্যাকাউন্টগুলির জন্য প্রমাণীকরণ নীতি নিয়ন্ত্রণ করেন এবং এমএফএ (MFA) বা নিরাপত্তা কী ব্যবহারের প্রয়োজন হতে পারে। আরও তথ্যের জন্য গুগল আইডেন্টিটি ম্যানেজমেন্টের ওভারভিউ এবং গুগল ক্লাউড লগইন সুরক্ষা ও নিয়ন্ত্রণের জন্য মাল্টি-ফ্যাক্টর অথেনটিকেশনের প্রয়োজনীয়তা দেখুন।
প্রমাণীকরণ সময়
auth_time ক্লেইমটি OpenID Connect প্রোটোকলের একটি স্ট্যান্ডার্ড অংশ, যা ব্যবহারকারী সর্বশেষ কখন গুগলের সাথে অথেন্টিকেট করেছেন সে সম্পর্কে তথ্য প্রদান করে। এটি একটি JSON সংখ্যা, যা ইউনিক্স ইপক (১লা জানুয়ারি, ১৯৭০, ০০:০০:০০ UTC) থেকে অতিবাহিত সেকেন্ডের সংখ্যাকে নির্দেশ করে এবং এটিই ব্যবহারকারীর সর্বশেষ অথেন্টিকেট করার সময়। এটিকে একটি টাইমস্ট্যাম্প হিসেবে ভাবা যেতে পারে, যা ব্যবহারকারীর বর্তমান ডিভাইস বা ব্রাউজার থেকে তার গুগল অ্যাকাউন্টে করা সর্বশেষ লগইন ইভেন্টকে নির্দেশ করে। এই ক্লেইমটি ID টোকেনের অন্তর্ভুক্ত থাকে, যা একটি JSON ওয়েব টোকেন (JWT) এবং এতে অথেন্টিকেশন ও ব্যবহারকারী সম্পর্কিত যাচাইকৃত তথ্য থাকে।
` auth_time ক্লেইমটি আপনার অ্যাপ্লিকেশনের জন্য মূল্যবান, কারণ এর মাধ্যমে আপনি নির্ধারণ করতে পারেন যে কোনো ব্যবহারকারী তার ব্যবহৃত ডিভাইস বা ব্রাউজারে কতক্ষণ আগে কোনো গুগল অ্যাকাউন্টে সক্রিয়ভাবে লগ ইন করেছেন। এটি বিশেষত নিরাপত্তা সংক্রান্ত কারণে গুরুত্বপূর্ণ হতে পারে, যেমন:
অ্যাকাউন্ট ডিলিট করা, যোগাযোগের পদ্ধতি পরিবর্তন করা বা পেমেন্ট করার মতো সংবেদনশীল ব্যবহারকারী কার্যকলাপ সম্পাদন করার আগে আপনার অ্যাপ একটি অতিরিক্ত স্টেপ-আপ অথেন্টিকেশন চ্যালেঞ্জ জারি করবে কিনা, সে বিষয়ে একটি সুচিন্তিত সিদ্ধান্ত নিন। গুগল, গুগল অ্যাকাউন্ট রিঅথেন্টিকেশন অনুরোধ সমর্থন করে না।
ব্যবহারকারীর গুগল অ্যাকাউন্ট সেশনের সতেজতা এবং স্থিতিশীলতাকে বিশ্বাসযোগ্যতার সংকেত হিসেবে ব্যবহার করা হয়। সাধারণত, সাম্প্রতিক
auth_timeমান সতেজতার নির্দেশক, আর পুরোনো মান স্থিতিশীলতা নির্দেশ করে।
ওয়েব অ্যাপের ক্ষেত্রে, ব্যবহারকারী তার গুগল অ্যাকাউন্টে সাইন ইন করার পর তার ব্রাউজার এবং অপারেটিং সিস্টেমের সমন্বয়ে একটি সেশন গঠিত হয়। স্বতন্ত্রভাবে, আপনার ওয়েবসাইটও একটি পৃথক ব্যবহারকারী সেশন বজায় রাখে। একটি নতুন auth_time ভ্যালু নির্দেশ করে যে ব্যবহারকারী সম্প্রতি তার গুগল অ্যাকাউন্টে সাইন ইন করেছেন। প্রায়শই এটি একজন সক্রিয় ও আগ্রহী ব্যবহারকারীর পরিচায়ক এবং এটিকে কম ঝুঁকির সংকেত হিসেবে ব্যাখ্যা করা যেতে পারে।
অ্যান্ড্রয়েডের মতো মোবাইল প্ল্যাটফর্মে ব্যবহারকারীরা সাধারণত ফিঙ্গারপ্রিন্ট বা ফেসিয়াল স্ক্যানিং এবং ডিভাইস-নির্দিষ্ট পিন বা প্যাটার্ন আনলকের মতো বায়োমেট্রিক পদ্ধতি ব্যবহার করে সরাসরি তাদের ডিভাইসে সাইন-ইন করেন। মোবাইল অ্যাপ এবং প্ল্যাটফর্মগুলো প্রায়শই গুগলের সাথে একটি নতুন সেশন তৈরি করার পরিবর্তে এই প্ল্যাটফর্ম-ভিত্তিক প্রমাণীকরণ পদ্ধতিগুলো ব্যবহার করে, যার ফলে গুগল অ্যাকাউন্টে অনিয়মিতভাবে সাইন-ইন করা হয় এবং সেই অনুযায়ী auth_time আপডেট হয়। সুতরাং, এক্ষেত্রে একটি সাম্প্রতিক auth_time মান একটি দীর্ঘস্থায়ী গুগল অ্যাকাউন্ট সেশনে পরিবর্তনের ইঙ্গিত দিতে পারে এবং এর ফলে ঝুঁকি বেড়ে যায়।
বিশ্বাসযোগ্যতার সংকেত একটি সূক্ষ্ম বিষয়। auth_time অন্যান্য সংকেতের সাথে একত্রে ব্যবহার করা উচিত, যেমন—মাল্টি-ফ্যাক্টর অথেন্টিকেশন (MFA) চালু আছে কিনা, ব্যবহৃত অথেন্টিকেশন পদ্ধতি এবং আপনার অ্যাপ্লিকেশন ও প্ল্যাটফর্মের মধ্যে ব্যবহারকারীর সেশনের সময়কাল।
অনুরোধ
auth_time এবং amr ক্লেইমগুলো অনুরোধ করার নির্দিষ্ট পদ্ধতি ব্যবহৃত API অনুযায়ী ভিন্ন হয়, তবে প্রতিটি API-তেই auth_time এবং amr অনুরোধ করার জন্য একটি ঐচ্ছিক claims প্যারামিটার অন্তর্ভুক্ত থাকে।
OIDC প্রোটোকল
সরাসরি OAuth প্ল্যাটফর্ম ব্যবহার করার সময়, ঐচ্ছিক claims রিকোয়েস্ট প্যারামিটারে auth_time যোগ করে এর জন্য অনুরোধ করুন। claims JSON অবজেক্টের id_token ফিল্ডের মান {"auth_time":{"essential":true}} সেট করুন। একইভাবে, amr জন্য অনুরোধ করতে claims {"amr":{"essential":true}} যোগ করুন।
https://accounts.google.com/o/oauth2/v2/auth? response_type=id_token& client_id=YOUR_CLIENT_ID& scope=openid email profile& redirect_uri=https://example.com/user-login& nonce=123-456-7890& claims={ "id_token": { "auth_time": { "essential":true }, "amr": {"essential":true} } }
আরও তথ্যের জন্য OpenID Connect দেখুন।
ওয়েবের জন্য জিআইএস
ওয়েবের জন্য 'সাইন ইন উইথ গুগল' লাইব্রেরিতে অতিরিক্ত ক্লেইম অনুরোধ করার জন্য দুটি এপিআই রয়েছে: এইচটিএমএল এবং জাভাস্ক্রিপ্ট। উদাহরণস্বরূপ, জাভাস্ক্রিপ্ট এপিআই ব্যবহার করে auth_time এবং amr অনুরোধ করুন:
<html>
<body>
<script src="https://accounts.google.com/gsi/client" async></script>
<script>
window.onload = function () {
google.accounts.id.initialize({
client_id: "YOUR_WEB_CLIENT_ID",
callback: function(rsp) { console.log(rsp.credential); },
essential_claims: "auth_time, amr",
});
google.accounts.id.renderButton(
document.getElementById("buttonDiv"),
{ type: "standard", size: "large" }
);
}
</script>
<div id="buttonDiv"></div>
</body>
</html>আরও তথ্যের জন্য ‘ওয়েবের জন্য গুগল দিয়ে সাইন ইন’ দেখুন।
অ্যান্ড্রয়েডের জন্য জিআইএস
auth_time এবং amr অনুরোধ করার জন্য setClaims মেথড এবং Claim অবজেক্ট ব্যবহার করা হয়।
androidx.credentials:credentials-play-services-auth এবং com.google.android.libraries.identity.googleid:googleid লাইব্রেরিগুলোর সর্বশেষ সংস্করণ ব্যবহার করার জন্য আপনার বিল্ড ডিপেন্ডেন্সি আপডেট করুন।
সাইন-ইন অপশনের তালিকায় যোগ করার জন্য setClaims ব্যবহার করে auth_time এবং amr টাইপের Claim অবজেক্ট তৈরি করুন:
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder() .setAutoSelectEnabled(true) .setFilterByAuthorizedAccounts(true) .setServerClientId(WEB_CLIENT_ID) .setNonce("NONCE") .setClaims(ImmutableList.of( new Claim("auth_time", true), new Claim("amr", true) )) .build()
আরও তথ্যের জন্য ‘গুগল দিয়ে সাইন ইন করুন’ ব্যবহার করে ব্যবহারকারীদের প্রমাণীকরণ দেখুন।
আইওএস
iOS-এর জন্য 'Sign in with Google' SDK, GIDSignIn ক্লাসে একটি authTimeClaim অবজেক্ট এবং claims প্যারামিটার যোগ করে, যা ঐচ্ছিকভাবে auth_time এবং amr অনুরোধ করার জন্য ব্যবহৃত হয়।
ASWebAuthenticationSession ব্যবহারকারী অ্যাপগুলো ডিভাইস-ব্যাপী একটি শেয়ার্ড কুকি জার আপডেট করে। iOS 12 বা তার পরবর্তী সংস্করণ এবং macOS 10.15 বা তার পরবর্তী সংস্করণে GIDSignIn ডিফল্টরূপে এই পদ্ধতিটি ব্যবহার করে। এই ক্ষেত্রে, কোনো ব্যবহারকারী যখন তার গুগল অ্যাকাউন্টে সাইন ইন করেন, তখন তাকে অথেন্টিকেট করা হয় এবং সেশনটি শেয়ার্ড কুকি জারে সংরক্ষিত হয়। এখানে auth_time হলো ডিভাইসে ব্যবহারকারীর সর্বশেষ গুগল অথেন্টিকেশন, যা শুধু আপনার অ্যাপের মধ্যেই নয়।
SFSafariViewController , WKWebView এবং UIWebView আপনার অ্যাপের মধ্যে বিচ্ছিন্ন স্যান্ডবক্সে কাজ করে, auth_time ব্যবহার করার সময় এগুলো ব্যবহার করা এড়িয়ে চলুন। এখানে auth_time হলো অ্যাপটিতে ব্যবহারকারীর সর্বশেষ সাইন-ইন করার সময়, যেহেতু মানটি সর্বদা সাম্প্রতিক, তাই এটি তেমন অর্থবহ নয়।
auth_time অনুরোধ করতে, GoogleSignIn ডিপেন্ডেন্সিগুলো সর্বশেষ সংস্করণে আপডেট করুন এবং একটি authTimeClaim অবজেক্ট তৈরি করে সেটিকে claims সেটে যুক্ত করুন।
amr জন্য অনুরোধ করতে একটি amrClaim অবজেক্ট তৈরি করুন এবং সেটিকে claims সেটে যুক্ত করুন।
সুইফট
GIDSignIn.sharedInstance.signIn মেথডটিতে ক্লেইম সেটটি যোগ করুন:
let authTimeClaim = GIDClaim.authTime() let amrClaim = GIDClaim.amr() let claims = Set([authTimeClaim, amrClaim])// Start the sign-in process GIDSignIn.sharedInstance.signIn( withPresenting: rootViewController, claims: claims ) { signInResult, error in guard let result = signInResult else { print("Error signing in: (error?.localizedDescription ?? "No error description")") return } // If sign in succeeded, display the app's main content View print("ID Token: (result.user.idToken?.tokenString ?? "No token")") }
উদ্দেশ্য-সি
signInWithPresentingViewController মেথডে ক্লেইম সেটটি যোগ করুন:
GIDClaim *authTimeClaim = [GIDClaim authTimeClaim]; GIDClaim *AMRClaim = [GIDClaim AMRClaim]; NSSet *claims = [NSSet setWithArray:@[authTimeClaim, AMRClaim]];// Include the claims set and start the sign-in process [GIDSignIn.sharedInstance signInWithPresentingViewController:self hint:nil claims:claims completion:^(GIDSignInResult * _Nullable signInResult, NSError * _Nullable error) { // On success signInResult.user.idToken // contains the requested claims. }];
আরও তথ্যের জন্য আপনার iOS বা macOS অ্যাপে Google Sign-In একীভূত করা দেখুন।
প্রতিক্রিয়া
যখন অনুরোধে auth_time বা amr ক্লেইমগুলো অন্তর্ভুক্ত করা হয়, তখন সেগুলো ID টোকেন পেলোড রেসপন্সে iss (ইস্যুকারী), sub (বিষয়), aud (শ্রোতা), এবং exp (মেয়াদ উত্তীর্ণের সময়)-এর মতো অন্যান্য স্ট্যান্ডার্ড ক্লেইমগুলোর সাথে ফেরত দেওয়া হয়।
ক্লেইম খুঁজে না পাওয়ার সম্ভাব্য কারণ হলো অ্যাপটি ভেরিফাই করা না থাকা অথবা অতিরিক্ত সেটিংস নিষ্ক্রিয় থাকা, যা ডিফল্টভাবেই চালু থাকে। ক্লায়েন্ট আইডি ও ব্যবহৃত অ্যাপটি ভেরিফাই করা আছে এবং অতিরিক্ত ক্লেইমগুলো সক্রিয় করা আছে কিনা, তা নিশ্চিত করতে সেটআপ- এর নির্দেশাবলী অনুসরণ করুন।
auth_time ক্লেইমের মান হলো একটি JSON সংখ্যা, যা ইউনিক্স ইপক (১লা জানুয়ারি, ১৯৭০, ০০:০০:০০ UTC) থেকে সর্বশেষ ব্যবহারকারী প্রমাণীকরণের সময় পর্যন্ত অতিবাহিত সেকেন্ডের সংখ্যাকে নির্দেশ করে।
amr ক্লেইমের ভ্যালুটি হলো স্ট্রিং-এর একটি JSON অ্যারে, যা সর্বশেষ গুগল অ্যাকাউন্ট সাইন-ইন করার সময় ব্যবহৃত প্রমাণীকরণ পদ্ধতিগুলোকে উপস্থাপন করে।
এটি একটি ডিকোড করা আইডি টোকেনের উদাহরণ, যাতে auth_time এবং amr ক্লেইমগুলো অন্তর্ভুক্ত রয়েছে:
{ "iss": "https://accounts.google.com", "azp": "YOUR_CLIENT_ID", "aud": "YOUR_CLIENT_ID", "sub": "117726431651943698600", "email": "alice@example.com", "email_verified": true, "nonce": "123-456-7890", "auth_time": 1748875426, "amr": ["mfa", "pwd", "tel"], "nbf": 1748880889, "name": "Elisa Beckett", "picture": "https://lh3.googleusercontent.com/a/default-user=s96-c", "given_name": "Elisa", "family_name": "Beckett", "iat": 1748881189, "exp": 1748884789, "jti": "8b5d7ce345787d5dbf14ce6e08a8f88ee8c9b5b1" }
আইডি টোকেনে একটি iat (issued at) ক্লেইমও থাকে, যা JWT-টি ইস্যু করার সময় নির্দেশ করে। iat এবং auth_time ক্লেইম দুটি তুলনা করে, নির্দিষ্ট আইডি টোকেনটি তৈরি হওয়ার সময়ের সাপেক্ষে ব্যবহারকারীর শেষ অথেনটিকেশনের পর থেকে অতিবাহিত সময় আপনি নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, যদি iat হয় 1748881189 এবং auth_time হয় 1748875426, তাহলে পার্থক্যটি হলো 5763 সেকেন্ড, যা ১ ঘন্টা, ৩৬ মিনিট এবং ৩ সেকেন্ড অতিবাহিত সময়কে নির্দেশ করে।