এই নির্দেশিকাটি এমন কিছু বৈশিষ্ট্যের সংকলন বর্ণনা করে যা একটি Google অ্যাকাউন্ট সম্পর্কে অতিরিক্ত বিশ্বাসের সংকেত প্রদান করে। এই বিশ্বাসের সংকেতগুলি আপনার অ্যাকাউন্ট ব্যবস্থাপনা সিস্টেমকে সাইন আপ, অ্যাকাউন্ট তৈরি এবং পরবর্তীতে ফিরে আসা ব্যবহারকারীদের জন্য ঝুঁকি-ভিত্তিক সিদ্ধান্ত নিতে সাহায্য করে।
সেটআপ
অতিরিক্ত দাবি গ্রহণের জন্য আপনার অ্যাপটি প্রকাশ, যাচাই এবং নিরাপত্তা বান্ডেল বৈশিষ্ট্যগুলি সক্ষম করতে হবে।
আপনার অ্যাপটি প্রকাশিত এবং যাচাই করা হয়েছে তা নিশ্চিত করতে:
- গুগল অথ প্ল্যাটফর্ম খুলুন
- আপনার অ্যাপের জন্য প্রকল্পটি নির্বাচন করুন বা তৈরি করুন
- মেনুতে "শ্রোতা" এ ক্লিক করুন।
- প্রকাশনার অবস্থা উৎপাদনে আছে কিনা তা নিশ্চিত করুন
- মেনুতে যাচাইকরণ কেন্দ্রে ক্লিক করুন।
যাচাইকরণের স্থিতি যাচাই করা হয়েছে কিনা তা নিশ্চিত করুন।
আরও জানতে, OAuth অ্যাপ যাচাইকরণ সহায়তা কেন্দ্রে যান।
auth_time দাবি সক্রিয় করতে:
- গুগল অথ প্ল্যাটফর্ম খুলুন
- আপনার অ্যাপের জন্য প্রকল্পটি নির্বাচন করুন বা তৈরি করুন
- মেনুতে সেটিংসে ক্লিক করুন
- উন্নত সেটিংসের অধীনে
auth_timeসক্ষম করতে Session age claims নির্বাচন করুন।
সমর্থিত বৈশিষ্ট্য
এই বিভাগটি নিরাপত্তা বান্ডেল তৈরির স্বতন্ত্র বৈশিষ্ট্যগুলি বর্ণনা করে।
প্রমাণীকরণের সময়
auth_time দাবি হল OpenID Connect প্রোটোকলের একটি স্ট্যান্ডার্ড অংশ যা End-User কখন Google-এর সাথে সম্প্রতি প্রমাণীকরণ করেছে সে সম্পর্কে তথ্য প্রদান করে। এটি একটি JSON নম্বর যা Unix যুগের (১ জানুয়ারী, ১৯৭০, ০০:০০:০০ UTC) পর থেকে অতিবাহিত সেকেন্ডের সংখ্যা এবং ব্যবহারকারীর শেষ প্রমাণীকরণের সময়কে প্রতিনিধিত্ব করে। এটিকে একটি টাইমস্ট্যাম্প হিসাবে ভাবুন যা বর্তমান ডিভাইস বা ব্রাউজার থেকে ব্যবহারকারীর Google অ্যাকাউন্টে শেষ লগইন ইভেন্ট নির্দেশ করে। এই দাবিটি ID টোকেনের মধ্যে অন্তর্ভুক্ত, যা একটি JSON ওয়েব টোকেন (JWT) যা প্রমাণীকরণ এবং ব্যবহারকারী সম্পর্কে যাচাইকৃত তথ্য ধারণ করে।
auth_time দাবিটি আপনার অ্যাপ্লিকেশনের জন্য মূল্যবান কারণ এটি আপনাকে নির্ধারণ করতে দেয় যে একজন ব্যবহারকারী সম্প্রতি কতদিন ধরে তাদের ব্যবহৃত ডিভাইস বা ব্রাউজারে Google অ্যাকাউন্টে সক্রিয়ভাবে লগ ইন করেছেন। এটি বিশেষভাবে নিরাপত্তার উদ্দেশ্যে গুরুত্বপূর্ণ হতে পারে যেমন:
অ্যাকাউন্ট মুছে ফেলা, অ্যাকাউন্টের সাথে যোগাযোগের পদ্ধতি পরিবর্তন করা, অথবা অর্থপ্রদানের মতো সংবেদনশীল ব্যবহারকারীর পদক্ষেপ নেওয়ার আগে আপনার অ্যাপটি অতিরিক্ত স্টেপ-আপ প্রমাণীকরণ চ্যালেঞ্জ জারি করবে কিনা সে সম্পর্কে একটি সচেতন সিদ্ধান্ত নেওয়া। Google Google অ্যাকাউন্ট পুনঃপ্রমাণ অনুরোধ সমর্থন করে না।
ব্যবহারকারীর Google অ্যাকাউন্ট সেশনের সতেজতা এবং স্থিতিশীলতাকে বিশ্বাসের সংকেত হিসেবে ব্যবহার করা। সাধারণভাবে বলতে গেলে, সাম্প্রতিক
auth_timeমান সতেজতার ইঙ্গিত দেয়, যখন একটি পুরানো মান স্থিতিশীলতা নির্দেশ করে।
ওয়েব অ্যাপের ক্ষেত্রে, ব্যবহারকারীর ব্রাউজার এবং অপারেটিং সিস্টেমের সমন্বয়ে ব্যবহারকারী তার Google অ্যাকাউন্টে সাইন ইন করার পর একটি সেশন তৈরি হয়। স্বাধীনভাবে, আপনার ওয়েবসাইটটিও একটি পৃথক ব্যবহারকারী সেশন বজায় রাখে। একটি নতুন auth_time মান ব্যবহারকারীকে সম্প্রতি তার Google অ্যাকাউন্টে সাইন ইন করেছেন তা নির্দেশ করে। প্রায়শই এটি একজন সক্রিয়, নিযুক্ত ব্যবহারকারীর ইঙ্গিত দেয় এবং এটি কম ঝুঁকির সংকেত হিসাবে ব্যাখ্যা করা যেতে পারে।
অ্যান্ড্রয়েডের মতো মোবাইল প্ল্যাটফর্মে ব্যবহারকারীরা সাধারণত ফিঙ্গারপ্রিন্ট বা ফেসিয়াল স্ক্যানিং এবং ডিভাইস নির্দিষ্ট পিন বা প্যাটার্ন আনলকের মতো বায়োমেট্রিক পদ্ধতি ব্যবহার করে সরাসরি তাদের ডিভাইসে সাইন-ইন করেন। মোবাইল অ্যাপ এবং প্ল্যাটফর্মগুলি প্রায়শই Google এর সাথে একটি নতুন সেশন তৈরি করার পরিবর্তে এই প্ল্যাটফর্ম ভিত্তিক প্রমাণীকরণ পদ্ধতিগুলি ব্যবহার করে, যার ফলে Google অ্যাকাউন্টে সাইন-ইন এবং auth_time এর সাথে সম্পর্কিত আপডেটগুলি খুব কমই ঘটে। তাই এখানে একটি সাম্প্রতিক auth_time মান দীর্ঘস্থায়ী Google অ্যাকাউন্ট সেশনে পরিবর্তনের ইঙ্গিত দিতে পারে এবং এর ফলে ঝুঁকি বৃদ্ধি পেতে পারে।
বিশ্বাস সংকেত একটি সূক্ষ্ম বিষয়। auth_time অন্যান্য সংকেতের সাথে ব্যবহার করা হবে বলে আশা করা হচ্ছে যেমন মাল্টি-ফ্যাক্টর অথেনটিকেশন (MFA) সক্ষম কিনা, ব্যবহৃত অথেনটিকেশন পদ্ধতি এবং আপনার অ্যাপ্লিকেশন এবং আপনার প্ল্যাটফর্মের মধ্যে ব্যবহারকারীর সেশনের সময়কাল।
auth_time অনুরোধ
auth_time দাবির অনুরোধ করার জন্য ব্যবহৃত নির্দিষ্ট পদ্ধতিটি ব্যবহৃত API অনুসারে পৃথক হয়, তবে প্রতিটি API-তে auth_time অনুরোধ করার জন্য একটি ঐচ্ছিক claims প্যারামিটার অন্তর্ভুক্ত থাকে।
OIDC প্রোটোকল
OAuth প্ল্যাটফর্ম সরাসরি ব্যবহার করার সময়, ঐচ্ছিক দাবি অনুরোধ প্যারামিটারে যোগ করে auth_time অনুরোধ করুন। দাবি 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 দেখুন।
ওয়েবের জন্য জিআইএস
ওয়েবের জন্য Sign In with Google লাইব্রেরিতে দুটি API রয়েছে: HTML এবং JavaScript অতিরিক্ত দাবির অনুরোধ করার জন্য। উদাহরণস্বরূপ, JavaScript API ব্যবহার করে 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 লাইব্রেরির সর্বশেষ সংস্করণ ব্যবহার করার জন্য আপনার বিল্ড নির্ভরতা আপডেট করুন।
auth_time ধরণের একটি Claim অবজেক্ট ইনস্ট্যান্টিয়েট করুন, setClaims ব্যবহার করে সাইন-ইন বিকল্পগুলি যোগ করুন:
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder() .setAutoSelectEnabled(true) .setFilterByAuthorizedAccounts(true) .setServerClientId(WEB_CLIENT_ID) .setNonce("NONCE") .setClaims(ImmutableList.of(new Claim("auth_time", true))) .build()
আরও তথ্যের জন্য "Google দিয়ে সাইন ইন করুন" ব্যবহার করে ব্যবহারকারীদের প্রমাণীকরণ করুন দেখুন।
আইওএস
iOS এর জন্য Sign In with Google SDK একটি authTimeClaim অবজেক্ট যোগ করে এবং GIDSignIn ক্লাসে প্যারামিটার claims যা ঐচ্ছিকভাবে auth_time অনুরোধ করতে ব্যবহৃত হয়।
ASWebAuthenticationSession ব্যবহার করে এমন অ্যাপগুলি ডিভাইস-ব্যাপী শেয়ার করা কুকি জার আপডেট করে। GIDSignIn iOS 12 বা তার পরবর্তী এবং macOS 12.16 বা তার পরবর্তী সংস্করণে ডিফল্টরূপে এই পদ্ধতিটি ব্যবহার করে। এই পরিস্থিতিতে, একজন ব্যবহারকারী তাদের Google অ্যাকাউন্টে সাইন ইন করলে প্রমাণীকরণ করা হয় এবং সেশনটি শেয়ার করা কুকি জার-এ সংরক্ষণ করা হয়। এখানে auth_time হল ব্যবহারকারীর ডিভাইসে শেষ Google প্রমাণীকরণ, কেবল আপনার অ্যাপের মধ্যেই নয়।
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 সাইন-ইন ইন্টিগ্রেট করা দেখুন।
auth_time প্রতিক্রিয়া
যখন auth_time দাবিটি অনুরোধে অন্তর্ভুক্ত করা হয়, তখন এটি iss (ইস্যুকারী), sub (বিষয়), aud (শ্রোতা) এবং exp (মেয়াদ শেষ হওয়ার সময়) এর মতো অন্যান্য স্ট্যান্ডার্ড দাবির সাথে ID টোকেন পেলোড প্রতিক্রিয়াতে প্রদর্শিত হয়। auth_time দাবির মান হল একটি JSON নম্বর যা ইউনিক্স যুগের (১ জানুয়ারী, ১৯৭০, ০০:০০:০০ UTC) পর থেকে ব্যবহারকারীর প্রমাণীকরণ শেষ হওয়ার সময় পর্যন্ত অতিবাহিত সেকেন্ডের সংখ্যা প্রতিনিধিত্ব করে। এটি একটি ডিকোড করা ID টোকেনের উদাহরণ যা auth_time দাবি অন্তর্ভুক্ত করে:
{ "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 (ইস্যু করা হয়েছে) দাবিও থাকে, যা JWT ইস্যু করার সময় নির্দেশ করে। iat এবং auth_time দাবির তুলনা করে, আপনি নির্দিষ্ট আইডি টোকেন তৈরির সময় অনুসারে ব্যবহারকারীর শেষ প্রমাণীকরণের পর থেকে অতিবাহিত সময় নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, যদি iat 1748881189 হয় এবং auth_time 1748875426 হয়, তাহলে পার্থক্য 5763 সেকেন্ড, যা 1 ঘন্টা, 36 মিনিট এবং 3 সেকেন্ড অতিবাহিত সময়ের প্রতিনিধিত্ব করে।