এই নির্দেশিকাটি এমন কিছু বৈশিষ্ট্যের বর্ণনা দেয় যা একটি গুগল অ্যাকাউন্ট সম্পর্কে অতিরিক্ত বিশ্বাসযোগ্যতার সংকেত প্রদান করে। এই বিশ্বাসযোগ্যতার সংকেতগুলো আপনার অ্যাকাউন্ট ম্যানেজমেন্ট সিস্টেমকে সাইন আপ, অ্যাকাউন্ট তৈরি এবং পরবর্তীতে ফিরে আসা ব্যবহারকারীদের জন্য ঝুঁকি-ভিত্তিক সিদ্ধান্ত নিতে সাহায্য করে।
সেটআপ
অতিরিক্ত ক্লেইম পেতে হলে আপনার অ্যাপটি প্রকাশিত, যাচাইকৃত এবং সিকিউরিটি বান্ডেল ফিচারগুলো সক্রিয় থাকতে হবে।
আপনার অ্যাপটি প্রকাশিত এবং যাচাইকৃত কিনা তা নিশ্চিত করতে:
- গুগল প্রমাণীকরণ প্ল্যাটফর্ম খুলুন
- আপনার অ্যাপের জন্য প্রজেক্টটি নির্বাচন করুন বা তৈরি করুন
- মেনুতে Audience- এ ক্লিক করুন
- প্রকাশনার অবস্থা নির্মাণাধীন আছে কিনা তা নিশ্চিত করুন।
- মেনুতে ভেরিফিকেশন সেন্টারে ক্লিক করুন
যাচাইকরণের স্থিতি 'যাচাইকৃত ' হিসেবে নিশ্চিত করুন।
আরও জানতে, OAuth অ্যাপ যাচাইকরণ সহায়তা কেন্দ্র দেখুন।
auth_time ক্লেইমটি সক্রিয় করতে:
- গুগল প্রমাণীকরণ প্ল্যাটফর্ম খুলুন
- আপনার অ্যাপের জন্য প্রজেক্টটি নির্বাচন করুন বা তৈরি করুন
- মেনুতে সেটিংস- এ ক্লিক করুন
- অ্যাডভান্সড সেটিংস-এর অধীনে,
auth_timeসক্রিয় করতে সেশন এজ ক্লেইমস নির্বাচন করুন।
সমর্থিত বৈশিষ্ট্য
এই বিভাগে সিকিউরিটি বান্ডেল গঠনকারী স্বতন্ত্র বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।
প্রমাণীকরণের সময়
auth_time ক্লেইমটি OpenID Connect প্রোটোকলের একটি স্ট্যান্ডার্ড অংশ, যা ব্যবহারকারী সর্বশেষ কখন গুগলের সাথে অথেন্টিকেট করেছেন সে সম্পর্কে তথ্য প্রদান করে। এটি একটি JSON সংখ্যা, যা ইউনিক্স ইপক (১লা জানুয়ারি, ১৯৭০, ০০:০০:০০ UTC) থেকে অতিবাহিত সেকেন্ডের সংখ্যাকে নির্দেশ করে এবং এটিই ব্যবহারকারীর সর্বশেষ অথেন্টিকেট করার সময়। এটিকে একটি টাইমস্ট্যাম্প হিসেবে ভাবা যেতে পারে, যা ব্যবহারকারীর বর্তমান ডিভাইস বা ব্রাউজার থেকে তার গুগল অ্যাকাউন্টে করা সর্বশেষ লগইন ইভেন্টকে নির্দেশ করে। এই ক্লেইমটি ID টোকেনের অন্তর্ভুক্ত থাকে, যা একটি JSON ওয়েব টোকেন (JWT) এবং এতে অথেন্টিকেশন ও ব্যবহারকারী সম্পর্কিত যাচাইকৃত তথ্য থাকে।
` auth_time ক্লেইমটি আপনার অ্যাপ্লিকেশনের জন্য মূল্যবান, কারণ এর মাধ্যমে আপনি নির্ধারণ করতে পারেন যে কোনো ব্যবহারকারী তার ব্যবহৃত ডিভাইস বা ব্রাউজারে কতক্ষণ আগে কোনো গুগল অ্যাকাউন্টে সক্রিয়ভাবে লগ ইন করেছেন। এটি বিশেষত নিরাপত্তা সংক্রান্ত কারণে গুরুত্বপূর্ণ হতে পারে, যেমন:
অ্যাকাউন্ট ডিলিট করা, যোগাযোগের পদ্ধতি পরিবর্তন করা বা পেমেন্ট করার মতো সংবেদনশীল ব্যবহারকারী কার্যকলাপ সম্পাদন করার আগে আপনার অ্যাপ একটি অতিরিক্ত স্টেপ-আপ অথেন্টিকেশন চ্যালেঞ্জ জারি করবে কিনা, সে বিষয়ে একটি সুচিন্তিত সিদ্ধান্ত নিন। গুগল, গুগল অ্যাকাউন্ট রিঅথেন্টিকেশন অনুরোধ সমর্থন করে না।
ব্যবহারকারীর গুগল অ্যাকাউন্ট সেশনের সতেজতা এবং স্থিতিশীলতাকে বিশ্বাসযোগ্যতার সংকেত হিসেবে ব্যবহার করা হয়। সাধারণত, সাম্প্রতিক
auth_timeমান সতেজতার নির্দেশক, আর পুরোনো মান স্থিতিশীলতা নির্দেশ করে।
ওয়েব অ্যাপের ক্ষেত্রে, ব্যবহারকারী তার গুগল অ্যাকাউন্টে সাইন ইন করার পর তার ব্রাউজার এবং অপারেটিং সিস্টেমের সমন্বয়ে একটি সেশন গঠিত হয়। স্বতন্ত্রভাবে, আপনার ওয়েবসাইটও একটি পৃথক ব্যবহারকারী সেশন বজায় রাখে। একটি নতুন auth_time ভ্যালু নির্দেশ করে যে ব্যবহারকারী সম্প্রতি তার গুগল অ্যাকাউন্টে সাইন ইন করেছেন। প্রায়শই এটি একজন সক্রিয় ও আগ্রহী ব্যবহারকারীর পরিচায়ক এবং এটিকে কম ঝুঁকির সংকেত হিসেবে ব্যাখ্যা করা যেতে পারে।
অ্যান্ড্রয়েডের মতো মোবাইল প্ল্যাটফর্মে ব্যবহারকারীরা সাধারণত ফিঙ্গারপ্রিন্ট বা ফেসিয়াল স্ক্যানিং এবং ডিভাইস-নির্দিষ্ট পিন বা প্যাটার্ন আনলকের মতো বায়োমেট্রিক পদ্ধতি ব্যবহার করে সরাসরি তাদের ডিভাইসে সাইন-ইন করেন। মোবাইল অ্যাপ এবং প্ল্যাটফর্মগুলো প্রায়শই গুগলের সাথে একটি নতুন সেশন তৈরি করার পরিবর্তে এই প্ল্যাটফর্ম-ভিত্তিক প্রমাণীকরণ পদ্ধতিগুলো ব্যবহার করে, যার ফলে গুগল অ্যাকাউন্টে অনিয়মিতভাবে সাইন-ইন করা হয় এবং সেই অনুযায়ী auth_time আপডেট হয়। সুতরাং, এক্ষেত্রে একটি সাম্প্রতিক auth_time মান একটি দীর্ঘস্থায়ী গুগল অ্যাকাউন্ট সেশনে পরিবর্তনের ইঙ্গিত দিতে পারে এবং এর ফলে ঝুঁকি বেড়ে যায়।
বিশ্বাসযোগ্যতার সংকেত একটি সূক্ষ্ম বিষয়। auth_time অন্যান্য সংকেতের সাথে একত্রে ব্যবহার করা উচিত, যেমন—মাল্টি-ফ্যাক্টর অথেন্টিকেশন (MFA) চালু আছে কিনা, ব্যবহৃত অথেন্টিকেশন পদ্ধতি এবং আপনার অ্যাপ্লিকেশন ও প্ল্যাটফর্মের মধ্যে ব্যবহারকারীর সেশনের সময়কাল।
প্রমাণীকরণের সময় অনুরোধ
auth_time ক্লেইম অনুরোধ করার নির্দিষ্ট পদ্ধতি ব্যবহৃত API ভেদে ভিন্ন হয়, তবে প্রতিটি API-তেই auth_time অনুরোধ করার জন্য একটি ঐচ্ছিক claims প্যারামিটার অন্তর্ভুক্ত থাকে।
OIDC প্রোটোকল
সরাসরি OAuth প্ল্যাটফর্ম ব্যবহার করার সময়, ঐচ্ছিক claims রিকোয়েস্ট প্যারামিটারে auth_time যোগ করে এর জন্য অনুরোধ করুন। claims JSON অবজেক্টের id_token ফিল্ডের মান {"auth_time":{"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}}}
আরও তথ্যের জন্য OpenID Connect দেখুন।
ওয়েবের জন্য জিআইএস
ওয়েবের জন্য 'সাইন ইন উইথ গুগল' লাইব্রেরিতে অতিরিক্ত ক্লেইম অনুরোধ করার জন্য দুটি এপিআই রয়েছে: এইচটিএমএল এবং জাভাস্ক্রিপ্ট। উদাহরণস্বরূপ, জাভাস্ক্রিপ্ট এপিআই ব্যবহার করে auth_time অনুরোধ করুন:
<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",
});
google.accounts.id.renderButton(
document.getElementById("buttonDiv"),
{ type: "standard", size: "large" }
);
}
</script>
<div id="buttonDiv"></div>
</body>
</html>আরও তথ্যের জন্য ‘ওয়েবের জন্য গুগল দিয়ে সাইন ইন’ দেখুন।
অ্যান্ড্রয়েডের জন্য জিআইএস
auth_time অনুরোধ করার জন্য একটি setClaims মেথড এবং Claim অবজেক্ট ব্যবহার করা হয়।
androidx.credentials:credentials-play-services-auth এবং com.google.android.libraries.identity.googleid:googleid লাইব্রেরিগুলোর সর্বশেষ সংস্করণ ব্যবহার করার জন্য আপনার বিল্ড ডিপেন্ডেন্সি আপডেট করুন।
setClaims ব্যবহার করে auth_time টাইপের একটি Claim অবজেক্ট তৈরি করুন এবং এতে সাইন-ইন অপশনগুলো যোগ করুন:
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder() .setAutoSelectEnabled(true) .setFilterByAuthorizedAccounts(true) .setServerClientId(WEB_CLIENT_ID) .setNonce("NONCE") .setClaims(ImmutableList.of(new Claim("auth_time", true))) .build()
আরও তথ্যের জন্য ‘গুগল দিয়ে সাইন ইন করুন’ ব্যবহার করে ব্যবহারকারীদের প্রমাণীকরণ দেখুন।
আইওএস
iOS-এর জন্য 'Sign in with Google' SDK, GIDSignIn ক্লাসে একটি authTimeClaim অবজেক্ট এবং claims প্যারামিটার যোগ করে, যা ঐচ্ছিকভাবে auth_time অনুরোধ করার জন্য ব্যবহৃত হয়।
ASWebAuthenticationSession ব্যবহারকারী অ্যাপগুলো ডিভাইস-ব্যাপী একটি শেয়ার্ড কুকি জার আপডেট করে। iOS 12 বা তার পরবর্তী সংস্করণ এবং macOS 12.16 বা তার পরবর্তী সংস্করণে GIDSignIn ডিফল্টরূপে এই পদ্ধতিটি ব্যবহার করে। এই ক্ষেত্রে, কোনো ব্যবহারকারী যখন তার গুগল অ্যাকাউন্টে সাইন ইন করেন, তখন তাকে অথেন্টিকেট করা হয় এবং সেশনটি শেয়ার্ড কুকি জারে সংরক্ষিত হয়। এখানে auth_time হলো ডিভাইসে ব্যবহারকারীর সর্বশেষ গুগল অথেন্টিকেশন, যা শুধু আপনার অ্যাপের মধ্যেই নয়।
SFSafariViewController , WKWebView এবং UIWebView আপনার অ্যাপের মধ্যে বিচ্ছিন্ন স্যান্ডবক্সে কাজ করে, auth_time ব্যবহার করার সময় এগুলো ব্যবহার করা এড়িয়ে চলুন। এখানে auth_time হলো অ্যাপটিতে ব্যবহারকারীর সর্বশেষ সাইন-ইন করার সময়, যেহেতু মানটি সর্বদা সাম্প্রতিক, তাই এটি তেমন অর্থবহ নয়।
auth_time অনুরোধ করতে, GoogleSignIn ডিপেন্ডেন্সিগুলো সর্বশেষ সংস্করণে আপডেট করুন এবং একটি authTimeClaim অবজেক্ট তৈরি করে সেটিকে claims সেটে যুক্ত করুন।
সুইফট
GIDSignIn.sharedInstance.signIn মেথডটিতে ক্লেইম সেটটি যোগ করুন:
let authTimeClaim = GIDClaim.authTime() let claims = Set([authTimeClaim])// 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]; NSSet *claims = [NSSet setWithObject:authTimeClaim];// 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 ক্লেইমটি অন্তর্ভুক্ত করা হয়, তখন এটি ID টোকেন পেলোড রেসপন্সে iss (ইস্যুকারী), sub (বিষয়), aud (শ্রোতা), এবং exp (মেয়াদ শেষ হওয়ার সময়)-এর মতো অন্যান্য স্ট্যান্ডার্ড ক্লেইমগুলোর পাশাপাশি প্রদর্শিত হয়। auth_time ক্লেইমের মান হলো একটি JSON সংখ্যা, যা ইউনিক্স ইপক (১ জানুয়ারি, ১৯৭০, ০০:০০:০০ UTC) থেকে ব্যবহারকারীর সর্বশেষ প্রমাণীকরণের সময় পর্যন্ত অতিবাহিত সেকেন্ডের সংখ্যাকে নির্দেশ করে। নিচে auth_time ক্লেইমসহ একটি ডিকোড করা ID টোকেনের উদাহরণ দেওয়া হলো:
{ "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, "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 সেকেন্ড, যা ১ ঘন্টা, ৩৬ মিনিট এবং ৩ সেকেন্ড অতিবাহিত সময়কে নির্দেশ করে।