इस गाइड में, ऐसी सुविधाओं के बारे में बताया गया है जो Google खाते के बारे में भरोसेमंद अतिरिक्त सिग्नल देती हैं. इन भरोसेमंद सिग्नल से, आपके खाता मैनेजमेंट सिस्टम को साइन अप करने, खाता बनाने, और बाद में वापस आने वाले उपयोगकर्ताओं के लिए जोखिम के आधार पर फ़ैसले लेने में मदद मिलती है.
सेटअप
ज़्यादा दावे पाने के लिए, आपका ऐप्लिकेशन पब्लिश होना चाहिए. साथ ही, उसकी पुष्टि होनी चाहिए और उसमें सुरक्षा बंडल की सुविधाएं चालू होनी चाहिए.
यह पुष्टि करने के लिए कि आपका ऐप्लिकेशन पब्लिश हो गया है और उसकी पुष्टि हो गई है:
- Google Auth Platform खोलें
- अपने ऐप्लिकेशन के लिए प्रोजेक्ट चुनें या बनाएं
- मेन्यू में जाकर, ऑडियंस पर क्लिक करें
- पुष्टि करें कि पब्लिश करने की स्थिति, प्रोडक्शन में है पर सेट हो
- मेन्यू में पुष्टि केंद्र पर क्लिक करें
पुष्टि करें कि पुष्टि की स्थिति पुष्टि हो चुकी है के तौर पर सेट है.
ज़्यादा जानने के लिए, OAuth ऐप्लिकेशन की पुष्टि करने से जुड़े सहायता केंद्र पर जाएं.
auth_time दावा चालू करने के लिए:
- Google Auth Platform खोलें
- अपने ऐप्लिकेशन के लिए प्रोजेक्ट चुनें या बनाएं
- मेन्यू में जाकर, सेटिंग पर क्लिक करें
- ऐडवांस सेटिंग में जाकर, सेशन की अवधि के दावे को चुनें. इसके बाद,
auth_timeको चालू करें.
इस्तेमाल की जा सकने वाली सुविधाएं
इस सेक्शन में, Security Bundle में शामिल अलग-अलग सुविधाओं के बारे में बताया गया है.
auth_time
auth_time दावा, OpenID Connect प्रोटोकॉल का एक स्टैंडर्ड हिस्सा है. यह इस बारे में जानकारी देता है कि असली उपयोगकर्ता ने Google के साथ सबसे हाल ही में कब पुष्टि की थी. यह एक JSON नंबर है. यह यूनिक्स इपोक (1 जनवरी, 1970, 00:00:00 यूटीसी) के बाद से बीते हुए सेकंड की संख्या को दिखाता है. साथ ही, यह वह समय है जब उपयोगकर्ता ने पिछली बार पुष्टि की थी. इसे टाइमस्टैंप के तौर पर देखा जा सकता है. इससे पता चलता है कि उपयोगकर्ता ने मौजूदा डिवाइस या ब्राउज़र से, अपने Google खाते में आखिरी बार कब लॉग इन किया था.
यह दावा, आईडी टोकन में शामिल होता है. यह एक JSON Web Token (JWT) होता है. इसमें पुष्टि करने और उपयोगकर्ता के बारे में पुष्टि की गई जानकारी शामिल होती है.
auth_time दावा आपके ऐप्लिकेशन के लिए अहम है. इसकी मदद से यह पता लगाया जा सकता है कि उपयोगकर्ता ने हाल ही में किस डिवाइस या ब्राउज़र पर Google खाते में लॉग इन किया है. सुरक्षा के लिहाज़ से यह खास तौर पर ज़रूरी हो सकता है. जैसे:
यह तय करने में मदद मिलती है कि क्या आपके ऐप्लिकेशन को संवेदनशील उपयोगकर्ता कार्रवाइयां करने से पहले, पुष्टि करने के लिए अतिरिक्त चरण वाला चैलेंज जारी करना चाहिए. जैसे, खाता मिटाना, खाते से जुड़ी संपर्क जानकारी के तरीके बदलना या पेमेंट करना. Google, Google खाते को फिर से पुष्टि करने के अनुरोधों को स्वीकार नहीं करता.
उपयोगकर्ता के Google खाते के सेशन की अवधि और स्थिरता को भरोसेमंद सिग्नल के तौर पर इस्तेमाल करना. आम तौर पर, हाल ही की
auth_timeवैल्यू से पता चलता है कि डेटा नया है. वहीं, पुरानी वैल्यू से पता चलता है कि डेटा स्थिर है.
वेब ऐप्लिकेशन के लिए, उपयोगकर्ता के ब्राउज़र और ऑपरेटिंग सिस्टम के कॉम्बिनेशन को सेशन माना जाता है. यह तब होता है, जब उपयोगकर्ता अपने Google खाते में साइन इन करता है.
आपकी वेबसाइट, उपयोगकर्ता के सेशन को अलग से मैनेज करती है. नई auth_time वैल्यू से पता चलता है कि उपयोगकर्ता ने हाल ही में अपने Google खाते में साइन इन किया है.
आम तौर पर, यह सक्रिय और दिलचस्पी दिखाने वाले उपयोगकर्ता का संकेत होता है. इसे कम जोखिम वाले सिग्नल के तौर पर भी देखा जा सकता है.
Android जैसे मोबाइल प्लैटफ़ॉर्म पर, उपयोगकर्ता आम तौर पर सीधे अपने डिवाइस में साइन इन करते हैं. इसके लिए, वे बायोमेट्रिक तरीकों का इस्तेमाल करते हैं. जैसे, फ़िंगरप्रिंट या चेहरे की पहचान. इसके अलावा, वे डिवाइस के हिसाब से पिन या पैटर्न अनलॉक का इस्तेमाल करते हैं. मोबाइल ऐप्लिकेशन और प्लैटफ़ॉर्म अक्सर Google के साथ नया सेशन बनाने के बजाय, प्लैटफ़ॉर्म पर आधारित पुष्टि करने के इन तरीकों का इस्तेमाल करते हैं. इससे, Google खाते में कम बार साइन इन किया जाता है और auth_time को अपडेट कम बार मिलता है. इसलिए, यहां हाल ही की auth_time वैल्यू, लंबे समय से चल रहे Google खाते के सेशन में बदलाव का संकेत दे सकती है. इससे जोखिम बढ़ जाता है.
भरोसेमंद होने के सिग्नल एक जटिल विषय है. auth_time का इस्तेमाल अन्य सिग्नल के साथ किया जाना चाहिए. जैसे, बहु-स्तरीय पुष्टि (एमएफ़ए) चालू है या नहीं, पुष्टि करने के लिए इस्तेमाल किया गया तरीका, और आपके ऐप्लिकेशन और प्लैटफ़ॉर्म के बीच उपयोगकर्ता के सेशन की अवधि.
auth_time अनुरोध
auth_time का दावा करने के लिए इस्तेमाल किया गया तरीका, इस्तेमाल किए गए एपीआई के हिसाब से अलग-अलग होता है. हालांकि, हर एपीआई में 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 देखें.
वेब के लिए GIS
वेब के लिए Sign in with Google लाइब्रेरी में दो एपीआई होते हैं: एचटीएमएल और 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>ज़्यादा जानकारी के लिए, वेब के लिए 'Google से साइन इन करें' देखें.
Android के लिए GIS
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()
ज़्यादा जानकारी के लिए, 'Google से साइन इन करें' सुविधा का इस्तेमाल करके उपयोगकर्ताओं की पुष्टि करना लेख पढ़ें.
iOS
iOS के लिए Sign in with Google SDK, GIDSignIn क्लास में एक authTimeClaim ऑब्जेक्ट और claims पैरामीटर जोड़ता है. इसका इस्तेमाल, auth_time का अनुरोध करने के लिए किया जाता है.
ASWebAuthenticationSession का इस्तेमाल करने वाले ऐप्लिकेशन, डिवाइस पर शेयर की गई कुकी के जार को अपडेट करते हैं. GIDSignIn इस तरीके का इस्तेमाल डिफ़ॉल्ट रूप से iOS 12 या इसके बाद के वर्शन और macOS 12.16 या इसके बाद के वर्शन में करता है. इस स्थिति में, अपने Google खाते में साइन इन करने वाले उपयोगकर्ता की पुष्टि की जाती है. साथ ही, सेशन को शेयर किए गए कुकी जार में सेव किया जाता है.
यहां auth_time का मतलब है कि उपयोगकर्ता ने डिवाइस पर आखिरी बार Google से पुष्टि कब की थी. यह सिर्फ़ आपके ऐप्लिकेशन के लिए नहीं है.
SFSafariViewController, WKWebView, और UIWebView आपके ऐप्लिकेशन में अलग-अलग सैंडबॉक्स में काम करते हैं. auth_time का इस्तेमाल करते समय, इनका इस्तेमाल न करें. यहां auth_time का मतलब है कि उपयोगकर्ता ने आखिरी बार ऐप्लिकेशन में साइन इन कब किया था. इसकी वैल्यू हमेशा हाल की होती है, इसलिए यह ज़्यादा काम की नहीं होती.
auth_time का अनुरोध करने के लिए, GoogleSignIn dependencies को नए वर्शन में अपडेट करें. इसके बाद, authTimeClaim ऑब्जेक्ट बनाएं और उसे claims सेट में जोड़ें.
Swift
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")") }
Objective-C
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 response
जब अनुरोध में auth_time दावा शामिल किया जाता है, तो यह आईडी
टोकन के पेलोड रिस्पॉन्स में दिखता है. यह iss (जारी करने वाला), sub (विषय), aud (दर्शक), और exp (समयसीमा खत्म होने का समय) जैसे अन्य स्टैंडर्ड दावों के साथ दिखता है. auth_time दावे की वैल्यू, एक JSON नंबर होती है. यह Unix epoch (1 जनवरी, 1970, 00:00:00 यूटीसी) से लेकर उपयोगकर्ता की पुष्टि होने के आखिरी समय तक के सेकंड की संख्या को दिखाती है. यह डिकोड किए गए आईडी टोकन का एक उदाहरण है. इसमें 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 सेकंड बीत चुके हैं.