Google Data Protocol Client Libraries में AuthSub

चेतावनी: यह पेज, Google के पुराने एपीआई, Google Data API के बारे में है. यह सिर्फ़ उन एपीआई के लिए काम का है जो Google Data API डायरेक्ट्री में शामिल हैं. इनमें से कई एपीआई को नए एपीआई से बदल दिया गया है. किसी नए एपीआई के बारे में जानकारी पाने के लिए, उस एपीआई का दस्तावेज़ देखें. नए एपीआई की मदद से अनुरोधों को अनुमति देने के बारे में जानकारी पाने के लिए, Google खातों के लिए पुष्टि करने और अनुमति देने की सुविधा लेख पढ़ें.

इस दस्तावेज़ में, Google Data API की क्लाइंट लाइब्रेरी का इस्तेमाल करके, Google के वेब ऐप्लिकेशन के लिए AuthSub Authentication से कनेक्ट करने का तरीका बताया गया है.

AuthSub इंटरफ़ेस की मदद से, वेब पर काम करने वाला कोई ऐप्लिकेशन, उपयोगकर्ता की ओर से Google की किसी सेवा को ऐक्सेस कर सकता है. सुरक्षा का बेहतर लेवल बनाए रखने के लिए, AuthSub इंटरफ़ेस की मदद से ऐप्लिकेशन को पुष्टि करने वाला टोकन मिलता है. हालांकि, इस दौरान उपयोगकर्ता के खाते में लॉगिन करने की जानकारी को कभी भी हैंडल नहीं किया जाता.

Google Data API क्लाइंट लाइब्रेरी, आपके वेब ऐप्लिकेशन में AuthSub का इस्तेमाल करने के तरीके उपलब्ध कराती हैं. खास तौर पर, अनुरोध यूआरएल बनाने, एक बार इस्तेमाल किया जा सकने वाला पुष्टि करने वाला टोकन पाने, एक बार इस्तेमाल किए जा सकने वाले टोकन को सेशन टोकन के लिए बदलने, और अनुरोध पर हस्ताक्षर करने के तरीके हैं.

ध्यान दें: JavaScript क्लाइंट लाइब्रेरी में AuthSub का अपना वर्शन होता है, जिसे AuthSubJS कहा जाता है. अपने JavaScript ऐप्लिकेशन में AuthSubJS का इस्तेमाल करने के तरीके के बारे में जानने के लिए, JavaScript Client Library के साथ "AuthSub" ऑथेंटिकेशन का इस्तेमाल करना लेख पढ़ें.

ऑडियंस

यह दस्तावेज़ उन प्रोग्रामर के लिए है जो अपने वेब ऐप्लिकेशन को, उपयोगकर्ताओं की ओर से Google की सेवाओं को ऐक्सेस करने की अनुमति देना चाहते हैं. इसके लिए, उन्हें Google Data APIs की क्लाइंट लाइब्रेरी का इस्तेमाल करना होगा.

इस दस्तावेज़ में यह माना गया है कि आपको AuthSub इंटरफ़ेस और अपने वेब ऐप्लिकेशन में AuthSub को शामिल करने की सामान्य प्रोसेस के बारे में पता है. AuthSub के प्रोटोकॉल के बारे में पूरी जानकारी के लिए, वेब ऐप्लिकेशन के लिए AuthSub ऑथेंटिकेशन लेख पढ़ें.

क्लाइंट लाइब्रेरी के बिना AuthSub और Google Data API का इस्तेमाल करना

अगर आपको अपने वेब ऐप्लिकेशन क्लाइंट को, पुष्टि करने के सिस्टम के तौर पर AuthSub का इस्तेमाल करके, Google Data सेवा से इंटरैक्ट करने की अनुमति देनी है, तो आपको वेब ऐप्लिकेशन के लिए AuthSub की मदद से पुष्टि करना लेख पढ़ना चाहिए. अगर आपको Google Data APIs की क्लाइंट लाइब्रेरी का इस्तेमाल नहीं करना है, तो ऐसा करना ज़रूरी नहीं है.

यहां बताया गया है कि आपका ऐप्लिकेशन, AuthSub का इस्तेमाल करके किसी उपयोगकर्ता की पुष्टि कैसे कर सकता है:

आपका ऐप्लिकेशन, सही AuthSub यूआरएल बनाता है. इसके बाद, उपयोगकर्ता को उस यूआरएल पर भेजता है, ताकि वह लॉग इन कर सके. AuthSub सिस्टम, उपयोगकर्ता को आपकी साइट के उस यूआरएल पर वापस भेजता है जिसे आपने तय किया है. साथ ही, एक बार इस्तेमाल किया जा सकने वाला टोकन वापस भेजता है. आपका ऐप्लिकेशन, उस टोकन को सेशन टोकन के लिए बदल सकता है. इसके बाद, आपका ऐप्लिकेशन, सेवा को भेजे जाने वाले हर अनुरोध के साथ, Authorization हेडर में टोकन भेजता है.

Google Data APIs की क्लाइंट लाइब्रेरी, अनुमति देने की इस प्रोसेस को आसान बनाती हैं. ये लाइब्रेरी, आपके लिए कई तरह की जानकारी मैनेज करती हैं. इस दस्तावेज़ में इसका तरीका बताया गया है.

AuthSub और Google Data API का इस्तेमाल करना: क्लाइंट लाइब्रेरी के उदाहरण

इस सेक्शन में, Google Data APIs क्लाइंट लाइब्रेरी के तरीकों का इस्तेमाल करने का उदाहरण दिखाया गया है. इससे AuthSub के दस्तावेज़ के "AuthSub का इस्तेमाल करना" सेक्शन में बताए गए चरणों का पालन किया जा सकता है.

इस उदाहरण में, हम AuthSub इंटरफ़ेस को Google Calendar के साथ इंटरैक्ट करने वाले वेब ऐप्लिकेशन में इंटिग्रेट कर रहे हैं. हालांकि, उदाहरण को समझने के लिए आपको Google Calendar के बारे में कुछ भी जानने की ज़रूरत नहीं है. इस उदाहरण में, यह माना गया है कि वेब ऐप्लिकेशन को example.com पर होस्ट किया गया है.

तय करें कि आपको किस तरह के टोकन (session=0 या session=1) का इस्तेमाल करना है

आपके पास एक बार इस्तेमाल किए जा सकने वाले टोकन (session=0) या सेशन टोकन (session=1) का इस्तेमाल करने का विकल्प होता है. इस दस्तावेज़ में सेशन टोकन का इस्तेमाल किया जाएगा, क्योंकि ये उन ऐप्लिकेशन के लिए ज़्यादा फ़ायदेमंद होते हैं जो कई एपीआई अनुरोध करते हैं. AuthSub के दस्तावेज़ में बताया गया है कि अगर आपको अपने वेब ऐप्लिकेशन में सेशन टोकन का इस्तेमाल करना है, तो आपको टोकन स्टोरेज को खुद मैनेज करना होगा. इस दस्तावेज़ में टोकन मैनेजमेंट के बारे में नहीं बताया गया है. यह भी ध्यान दें कि session=0 के साथ अनुरोध किए गए टोकन को बाद में, लंबे समय तक चलने वाले सेशन टोकन में बदला (अपग्रेड किया) नहीं जा सकता.

यह तय करना कि आपको अपना वेब ऐप्लिकेशन (secure=0 या secure=1) रजिस्टर करना है या नहीं

AuthSub का इस्तेमाल तीन अलग-अलग मोड में किया जा सकता है: रजिस्टर नहीं किया गया, रजिस्टर किया गया, और बेहतर सुरक्षा के साथ रजिस्टर किया गया. इस दस्तावेज़ के बाकी हिस्से में, आखिरी विकल्प को सुरक्षित AuthSub के तौर पर बताया जाएगा. बिना रजिस्टर किए/रजिस्टर किए गए मोड को सुरक्षित AuthSub की तुलना में आसानी से सेट अप किया जा सकता है. हालांकि, Google आपको बेहतर सुरक्षा के लिए सुरक्षित टोकन इस्तेमाल करने का सुझाव देता है.

रजिस्टर कैसे करें

वेब पर आधारित ऐप्लिकेशन के लिए रजिस्ट्रेशन चुनने पर, आपके ऐप्लिकेशन को ये फ़ायदे मिलते हैं:

  1. सुरक्षा का बेहतर लेवल.
  2. Google का भरोसा जीतना (Google के अनुमति पेज पर उपयोगकर्ता को कोई चेतावनी नहीं दिखनी चाहिए).

रजिस्टर किया गया + सुरक्षित AuthSub

अगर आपको सुरक्षित AuthSub का इस्तेमाल करना है, तो आपको अपने वेब ऐप्लिकेशन को रजिस्टर करने के साथ-साथ, खुद से साइन की गई आरएसए निजी कुंजी और सार्वजनिक सर्टिफ़िकेट का एक पेयर बनाना होगा. X.509 सर्टिफ़िकेट बनाने के उदाहरणों के लिए, रजिस्टर्ड मोड के साथ इस्तेमाल करने के लिए कुंजियां और सर्टिफ़िकेट जनरेट करना (नीचे) देखें.

यह तय करना कि आपको किस तरह के डेटा का ऐक्सेस चाहिए

Google की हर सेवा, scope वैल्यू तय करती है. इससे यह तय होता है कि टोकन को उपयोगकर्ता के डेटा का कितना ऐक्सेस मिलेगा. साथ ही, इससे टोकन के ऐक्सेस को सीमित किया जा सकता है. उपलब्ध scope वैल्यू की सूची देखने के लिए, अक्सर पूछे जाने वाले सवाल देखें.

हमने Google Calendar API के साथ इंटरैक्ट करने का फ़ैसला किया है. इसलिए, scope को http://www.google.com/calendar/feeds/ होना चाहिए.

ध्यान दें: स्कोप की वैल्यू को हमेशा सबसे बड़े यूआरएल पर सेट करें. ऐसा तब तक करें, जब तक आपको ज़्यादा पाबंदी लगाने की ज़रूरत न हो. उदाहरण के लिए, scope=http://www.google.com/calendar/feeds/default/allcalendars/full जैसे छोटे स्कोप से, टोकन का ऐक्सेस सिर्फ़ allcalendars/full फ़ीड तक सीमित हो जाएगा. scope=http://www.google.com/calendar/feeds/ का इस्तेमाल करने से, Calendar के सभी फ़ीड ऐक्सेस किए जा सकेंगे: http://www.google.com/calendar/feeds/*.

एक से ज़्यादा स्कोप वाले टोकन

एक से ज़्यादा Google Data API को ऐक्सेस करने वाले टोकन बनाने के लिए, हर स्कोप को यूआरएल-कोड वाले स्पेस से अलग करें. यहां दिए गए उदाहरण में, एक ऐसा टोकन बनाया गया है जिसके पास किसी उपयोगकर्ता के Google Contacts और Google Calendar, दोनों के डेटा को ऐक्सेस करने की अनुमति होगी.

scope=http://www.google.com/calendar/feeds/%20http://www.google.com/m8/feeds/

एक बार इस्तेमाल किया जा सकने वाला पुष्टि करने वाला टोकन का अनुरोध करना

किसी उपयोगकर्ता और किसी सेवा के लिए AuthSub टोकन पाने के लिए, आपके ऐप्लिकेशन को उपयोगकर्ता को AuthSubRequest यूआरएल पर रीडायरेक्ट करना होगा. इससे उपयोगकर्ता को अपने Google खाते में लॉग इन करने का अनुरोध मिलेगा. (AuthSubRequest यूआरएल के बारे में ज़्यादा जानकारी के लिए, वेब ऐप्लिकेशन के लिए AuthSub की पुष्टि करना लेख पढ़ें.)

अपने ऐप्लिकेशन में AuthSubRequest यूआरएल बनाने के लिए, हर क्लाइंट लाइब्रेरी के लिए यहां दिया गया तरीका अपनाएं:

Java

import com.google.gdata.client.*;

String nextUrl = "http://www.example.com/RetrieveToken.jsp";
String scope = "http://www.google.com/calendar/feeds/";
boolean secure = false;  // set secure=true to request secure AuthSub tokens
boolean session = true;
String authSubUrl = AuthSubUtil.getRequestUrl(nextUrl, scope, secure, session);

अगर आपको अपने G Suite डोमेन पर उपयोगकर्ताओं की पुष्टि करनी है, तो:

import com.google.gdata.client.*;

String hostedDomain = "example.com";
String nextUrl = "http://www.example.com/RetrieveToken.jsp";
String scope = "http://www.google.com/calendar/feeds/";
boolean secure = false;  // set secure=true to request AuthSub tokens
boolean session = true;
String authSubUrl = AuthSubUtil.getRequestUrl(hostedDomain, nextUrl, scope, secure, session);

.NET

using Google.GData.Client;

String nextUrl = "http://www.example.com/RetrieveToken.aspx";
String scope = "http://www.google.com/calendar/feeds/";
bool secure = false; // set secure=true to request secure AuthSub tokens
bool session = true;
String authSubUrl = AuthSubUtil.getRequestUrl(nextUrl, scope, secure, session);

अगर आपको अपने G Suite डोमेन पर उपयोगकर्ताओं की पुष्टि करनी है, तो:

using Google.GData.Client;

String hostedDomain = "example.com";
String nextUrl = "http://www.example.com/RetrieveToken.aspx";
String scope = "http://www.google.com/calendar/feeds/";
bool secure = false; // set secure=true to request secure AuthSub tokens
bool session = true;
String authSubUrl = AuthSubUtil.getRequestUrl(hostedDomain, nextUrl, scope, secure, session);

PHP

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');

$nextUrl = 'http://www.example.com/RetrieveToken.php';
$scope = 'http://www.google.com/calendar/feeds/';
$secure = 0;  // set $secure=1 to request secure AuthSub tokens
$session = 1;
$authSubUrl = Zend_Gdata_AuthSub::getAuthSubTokenUri($nextUrl, $scope, $secure, $session);

अगर आपको अपने G Suite डोमेन पर उपयोगकर्ताओं की पुष्टि करनी है, तो:

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');

$hostedDomain = 'example.com';
$nextUrl = 'http://www.example.com/RetrieveToken.php';
$scope = 'http://www.google.com/calendar/feeds/';
$secure = 0;  // set $secure=1 to request secure AuthSub tokens
$session = 1;
$authSubUrl = Zend_Gdata_AuthSub::getAuthSubTokenUri($nextUrl, $scope, $secure, $session) . '&hd=' . $hostedDomain;

Python

import gdata.auth

next = 'http://www.example.com/RetrieveToken.pyc'
scope = 'http://www.google.com/calendar/feeds/'
secure = False  # set secure=True to request secure AuthSub tokens
session = True
auth_sub_url = gdata.auth.GenerateAuthSubRequestUrl(next, scope, secure=secure, session=session)

अगर आपको अपने G Suite डोमेन पर उपयोगकर्ताओं की पुष्टि करनी है, तो:

import gdata.auth

hosted_domain = 'example.com'
next = 'http://www.example.com/RetrieveToken.pyc'
scope = 'http://www.google.com/calendar/feeds/'
secure = False  # set secure=True to request secure AuthSub tokens
session = True
auth_sub_url = gdata.auth.GenerateAuthSubRequestUrl(next, scope, secure=secure, session=session, domain=hosted_domain)

"next" यूआरएल बनाने के बाद, आपका ऐप्लिकेशन इसका इस्तेमाल कई तरीकों से कर सकता है, ताकि उपयोगकर्ता को AuthSubRequest हैंडलर पर भेजा जा सके. सबसे सामान्य तरीका यह है कि उपयोगकर्ता को एक ऐसा पेज दिखाया जाए जिसमें बताया गया हो कि उसे एक लिंक पर क्लिक करके, आपके ऐप्लिकेशन को अपने Google खाते को ऐक्सेस करने की अनुमति देनी होगी. इसके बाद, अनुरोध के यूआरएल को लिंक से अटैच करें. उदाहरण के लिए, अपने वेब ऐप्लिकेशन में यह स्ट्रिंग आउटपुट की जा सकती है:

String authorizationUrl =
        "<p>MyApp needs access to your Google Calendar account to read your Calendar feed. " +
        "To authorize MyApp to access your account, <a href=\"" + authSubUrl + "\">log in to your account</a>.</p>";

उपयोगकर्ता, Google पर AuthSub पेज के लिंक पर जाता है और लॉग इन करता है. इसके बाद, AuthSub सिस्टम उपयोगकर्ता को आपके ऐप्लिकेशन पर वापस रीडायरेक्ट करता है. इसके लिए, वह आपके दिए गए "next" यूआरएल का इस्तेमाल करता है.

एक बार इस्तेमाल किया जा सकने वाला टोकन निकालना

जब Google आपको वापस आपके ऐप्लिकेशन पर रीडायरेक्ट करता है, तब टोकन को "next" यूआरएल में क्वेरी पैरामीटर के तौर पर जोड़ा जाता है. ऊपर दिए गए उदाहरणों में, उपयोगकर्ता के लॉग इन करने के बाद Google उसे http://www.example.com/RetrieveToken?token=DQAADKEDE जैसे यूआरएल पर रीडायरेक्ट करता है. आपका ऐप्लिकेशन, यूआरएल क्वेरी पैरामीटर से टोकन की वैल्यू को निकालेगा.

अगर आपके ऐप्लिकेशन ने उपयोगकर्ता को AuthSub सिस्टम पर भेजने से पहले, उसके ब्राउज़र में पुष्टि करने वाली कुकी सेट की है, तो Google के "next" यूआरएल पर रीडायरेक्ट करने पर, आपका ऐप्लिकेशन पुष्टि करने वाली कुकी को पढ़ सकता है. इससे यह पता चलता है कि उस यूआरएल पर कौन सा उपयोगकर्ता पहुंचा है. इस तरह की कुकी का इस्तेमाल करके, अपने ऐप्लिकेशन में मौजूद यूज़र आईडी को Google से मिले AuthSub टोकन से जोड़ा जा सकता है.

क्लाइंट लाइब्रेरी, एक बार इस्तेमाल किया जा सकने वाला टोकन निकालने के लिए आसान तरीके उपलब्ध कराती हैं:

Java

String singleUseToken = AuthSubUtil.getTokenFromReply(httpServletRequest.getQueryString());

.NET

String singleUseToken = Request.QueryString["token"];
// or
String singleUseToken = AuthSubUtil.getTokenFromReply(new Uri(Request.QueryString));

PHP

$singleUseToken = $_GET['token'];

Python

current_url = 'http://' + req.hostname + req.unparsed_uri
# Unlike the other calls, extract_auth_sub_token_from_url() will create an AuthSubToken or SecureAuthSubToken object.
# Use str(single_use_token) to return the token's string value.
single_use_token = gdata.auth.extract_auth_sub_token_from_url(current_url)

अगर सुरक्षित AuthSub का इस्तेमाल किया जा रहा है, तो आरएसए का निजी पासकोड सेट करना न भूलें, ताकि SecureAuthSubToken बनाया जा सके:

f = open('/path/to/yourRSAPrivateKey.pem')
rsa_key = f.read()
f.close()
current_url = 'http://' + req.hostname + req.unparsed_uri
# Unlike the other calls, extract_auth_sub_token_from_url() will create an AuthSubToken or SecureAuthSubToken object.
# Use str(single_use_token) to return the token's string value.
single_use_token = gdata.auth.extract_auth_sub_token_from_url(current_url, rsa_key=rsa_key)

सेशन टोकन का अनुरोध करना

यूआरएल से वापस पाया गया टोकन, हमेशा एक बार इस्तेमाल किया जा सकने वाला टोकन होता है. अगला चरण, AuthSubSessionToken यूआरएल का इस्तेमाल करके, उस टोकन को लंबे समय तक चलने वाले सेशन टोकन के लिए अपग्रेड करना है. इसके बारे में वेब ऐप्लिकेशन के लिए AuthSub की पुष्टि करने की सुविधा के पूरे दस्तावेज़ में बताया गया है. अगर सुरक्षित AuthSub का इस्तेमाल किया जा रहा है, तो आपको एक्सचेंज करने से पहले अपनी RSA निजी कुंजी सेट करनी होगी. यहां हर क्लाइंट लाइब्रेरी का इस्तेमाल करके बनाए गए कुछ उदाहरण दिए गए हैं:

Java

import com.google.gdata.client.*;
import com.google.gdata.client.calendar.*;

String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, null);

CalendarService calendarService = new CalendarService("google-ExampleApp-v1.0");
calendarService.setAuthSubToken(sessionToken, null);

// ready to interact with Calendar feeds

सुरक्षित AuthSub के लिए, null पास करने के बजाय exchangeForSessionToken को अपनी आरएसए निजी कुंजी पास करें:

import com.google.gdata.client.*;
import com.google.gdata.client.calendar.*;

java.security.PrivateKey privateKey =
    AuthSubUtil.getPrivateKeyFromKeystore("AuthSubExample.jks", "privKeyPa$$word", "AuthSubExample", "privKeyPa$$word");
String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, privateKey);

CalendarService calendarService = new CalendarService("google-ExampleApp-v1.0");
calendarService.setAuthSubToken(sessionToken, privateKey);

// ready to interact with Calendar feeds

.NET

using Google.GData.Client;
using Google.GData.Calendar;

String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, null).ToString();

GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("cl", "google-ExampleApp-v1.0");
authFactory.Token = (String) sessionToken;

CalendarService calendarService = new CalendarService(authFactory.ApplicationName);
calendarService.RequestFactory = authFactory;

// ready to interact with Calendar feeds

सुरक्षित AuthSub के लिए, null पास करने के बजाय exchangeForSessionToken को अपनी आरएसए निजी कुंजी पास करें:

using Google.GData.Client;
using Google.GData.Calendar;

protected AsymmetricAlgorithm getRsaKey()
{
  X509Certificate2 cert = new X509Certificate2("C:/MyAspSite/test_cert.pfx", "privKeyPa$$word");
  RSACryptoServiceProvider privateKey = cert.PrivateKey as RSACryptoServiceProvider;
  return privateKey;
}

AsymmetricAlgorithm rsaKey = getRsaKey();
String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, rsaKey).ToString();

GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("cl", "google-ExampleApp-v1.0");
authFactory.Token = (String) sessionToken;
authFactory.PrivateKey = rsaKey;

CalendarService calendarService = new CalendarService(authFactory.ApplicationName);
calendarService.RequestFactory = authFactory;

// ready to interact with Calendar feeds

PHP

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

$sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken($singleUseToken);

// Create a Calendar service object and set the session token for subsequent requests
$calendarService = new Zend_Gdata_Calendar(null, 'google-ExampleApp-v1.0');
$calendarService->setAuthSubToken($sessionToken);

// ready to interact with Calendar feeds

सुरक्षित AuthSub के लिए, आपको पहले Zend_Gdata_HttpClient सेट अप करना होगा. इसके बाद, setAuthSubPrivateKeyFile() का इस्तेमाल करके, आरएसए की निजी कुंजी सेट करनी होगी:

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

$client = new Zend_Gdata_HttpClient();
$client->setAuthSubPrivateKeyFile('/path/to/myrsakey.pem', null, true);
$sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken($singleUseToken, $client);

$calendarService = new Zend_Gdata_Calendar($client, 'google-ExampleApp-v1.0');
$calendarService->setAuthSubToken($sessionToken);

// ready to interact with Calendar feeds

Python

import gdata.calendar
import gdata.calendar.service

calendar_service = gdata.calendar.service.CalendarService()
calendar_service.UpgradeToSessionToken(single_use_token)  # calls gdata.service.SetAuthSubToken() for you

# ready to interact with Calendar feeds

ध्यान दें: सुरक्षित AuthSub के लिए भी यही प्रोसेस है. हालांकि, इसके लिए ज़रूरी है कि आपने एक बार इस्तेमाल किया जा सकने वाला टोकन निकालने के लिए, gdata.auth.extract_auth_sub_token_from_url(url, rsa_key=rsa_key) का इस्तेमाल किया हो.

ध्यान दें: सुरक्षित AuthSub का इस्तेमाल करते समय, आपका निजी पासकोड नेटवर्क पर नहीं भेजा जाता. क्लाइंट लाइब्रेरी, आपकी कुंजी से अनुरोध पर हस्ताक्षर करके जनरेट किए गए यूनीक हस्ताक्षर को भेजती हैं, न कि कुंजी को.

सेशन टोकन का इस्तेमाल करना

AuthSub के दस्तावेज़ में बताए गए तरीके के मुताबिक, सर्वर पर अनुरोधों की पुष्टि करने के लिए सेशन टोकन का इस्तेमाल किया जा सकता है. इसके लिए, टोकन को Authorization हेडर में रखें.

सेशन टोकन सेट करने के बाद, सेवा के साथ इंटरैक्ट करने के लिए, Google Data APIs की स्टैंडर्ड क्लाइंट लाइब्रेरी कॉल का इस्तेमाल किया जा सकता है. इसके लिए, आपको टोकन के बारे में सोचने की ज़रूरत नहीं है. ज़्यादा जानकारी के लिए, क्लाइंट लाइब्रेरी का दस्तावेज़ और Google Data API की डेवलपर गाइड देखें. इसमें उस सेवा और भाषा के बारे में जानकारी दी गई है जिसका इस्तेमाल किया जा रहा है.

सेशन टोकन के बारे में जानकारी वापस पाना

अगर आपको यह जांच करनी है कि आपका क्लाइंट और सर्वर, टोकन के पैरामीटर पर सहमत हैं या नहीं, तो टोकन को AuthSubTokenInfo हैंडलर को पास किया जा सकता है. यह हैंडलर, नाम-वैल्यू पेयर का एक सेट दिखाता है. इसमें टोकन के बारे में जानकारी होती है.

Java

Map<String, String> tokenInfo = AuthSubUtil.getTokenInfo(sessionToken, null);

अगर सुरक्षित AuthSub का इस्तेमाल किया जा रहा है, तो आरएसए निजी पासकोड डालें:

Map<String, String> tokenInfo = AuthSubUtil.getTokenInfo(sessionToken, privateKey);

.NET

Dictionary<String, String> tokenInfo = AuthSubUtil.GetTokenInfo(sessionToken, null);

अगर सुरक्षित AuthSub का इस्तेमाल किया जा रहा है, तो आरएसए निजी पासकोड डालें:

Dictionary<String, String> tokenInfo = AuthSubUtil.GetTokenInfo(sessionToken, privateKey);

PHP

$tokenInfo = Zend_Gdata_AuthSub::getAuthSubTokenInfo($sessionToken);

अगर सुरक्षित AuthSub का इस्तेमाल किया जा रहा है, तो अपना Zend_Gdata_HttpClient पास करें, ताकि अनुरोध पर आपके RSA निजी पासकोड से हस्ताक्षर किया जा सके:

$tokenInfo = Zend_Gdata_AuthSub::getAuthSubTokenInfo($sessionToken, $client);

Python

token_info = calendar_service.AuthSubTokenInfo()

सेशन टोकन रद्द करना

AuthSub सेशन टोकन की समयसीमा खत्म नहीं होती. आपका क्लाइंट, सेशन टोकन को ज़रूरत के मुताबिक सेव कर सकता है.

इसलिए, जब आपका क्लाइंट सेशन टोकन का इस्तेमाल कर लेता है, तो वह AuthSub के दस्तावेज़ में बताए गए तरीके के मुताबिक, AuthSubRevokeToken हैंडलर का इस्तेमाल करके टोकन को रद्द कर सकता है.

उदाहरण के लिए, अगर आपको टोकन को पारंपरिक सेशन की तरह मैनेज करना है, तो आपका क्लाइंट उपयोगकर्ता के सेशन की शुरुआत में टोकन पा सकता है और उपयोगकर्ता के सेशन के खत्म होने पर उसे रद्द कर सकता है.

किसी टोकन को रद्द करने के लिए, हर क्लाइंट लाइब्रेरी में इसका इस्तेमाल करें:

Java

AuthSubUtil.revokeToken(sessionToken, null);

अगर सुरक्षित AuthSub का इस्तेमाल किया जा रहा है, तो आरएसए निजी पासकोड डालें:

AuthSubUtil.revokeToken(sessionToken, privateKey);

.NET

AuthSubUtil.revokeToken(sessionToken, null);

अगर सुरक्षित AuthSub का इस्तेमाल किया जा रहा है, तो आरएसए निजी पासकोड डालें:

AuthSubUtil.revokeToken(sessionToken, privateKey);

PHP

$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken);

अगर सुरक्षित AuthSub का इस्तेमाल किया जा रहा है, तो अपना Zend_Gdata_HttpClient पास करें, ताकि अनुरोध पर आपके RSA निजी पासकोड से हस्ताक्षर किया जा सके:

$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken, $client);

Python

calendar_service.RevokeAuthSubToken()

अन्य संसाधन और सैंपल

वापस सबसे ऊपर जाएं

सुरक्षित AuthSub के साथ इस्तेमाल करने के लिए, खुद के हस्ताक्षर वाली निजी पासकोड और सार्वजनिक सर्टिफ़िकेट जनरेट करना

निजी कुंजी का इस्तेमाल, हस्ताक्षर जनरेट करने के लिए किया जाता है. इसे हर अनुरोध के साथ शामिल करना ज़रूरी है. Google, हस्ताक्षर की पुष्टि करने के लिए, सर्टिफ़िकेट में एम्बेड की गई सार्वजनिक कुंजी का इस्तेमाल करता है. सार्वजनिक कुंजी, 1024-बिट आरएसए कुंजी होनी चाहिए. इसे PEM फ़ॉर्मैट में X.509 सर्टिफ़िकेट में एन्कोड किया गया हो. रजिस्ट्रेशन के समय, Google को सर्टिफ़िकेट भेजा जाना चाहिए.

यहां दिए गए सेक्शन में, दो खास टूल का इस्तेमाल करके कुंजियां और सर्टिफ़िकेट जनरेट करने के उदाहरण दिए गए हैं: OpenSSL यूटिलिटी और Java की keytool यूटिलिटी.

ये उदाहरण, Google Data API के लिए खास तौर पर नहीं दिए गए हैं. किसी भी मकसद के लिए कुंजियां जनरेट करने के लिए, इन्हीं यूटिलिटी का इस्तेमाल किया जा सकता है.

इन उदाहरणों में यह माना गया है कि आपकी कंपनी का नाम My_Company है और वह अमेरिका के कैलिफ़ोर्निया के माउंटेन व्यू में है. साथ ही, उसका डोमेन नेम example.com है.

OpenSSL का इस्तेमाल करके कुंजियां जनरेट करना

आरएसए कुंजियों का जोड़ा और उससे जुड़ा सर्टिफ़िकेट बनाने के लिए, इस निर्देश का इस्तेमाल किया जा सकता है:

# Generate the RSA keys and certificate
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -sha1 -subj \
  '/C=US/ST=CA/L=Mountain View/CN=www.example.com' -keyout \
  myrsakey.pem -out /tmp/myrsacert.pem

चेतावनी: -nodes पैरामीटर को शामिल करने से, पासवर्ड के बिना एक निजी पासकोड बन जाता है. हालांकि, ज़्यादा सुरक्षा के लिए आपको इस पैरामीटर को हटा देना चाहिए.

-sha1 पैरामीटर से पता चलता है कि कुंजी का इस्तेमाल SHA1 सिग्नेचर जनरेट करने के लिए किया जाएगा.

-subj पैरामीटर, उस ऐप्लिकेशन की पहचान बताता है जिसे सर्टिफ़िकेट दिखाता है.

-keyout पैरामीटर, उस फ़ाइल के बारे में बताता है जिसमें कुंजियां शामिल होंगी. इस फ़ाइल में संवेदनशील जानकारी है. इसलिए, इसकी सुरक्षा की जानी चाहिए और इसे किसी के साथ शेयर नहीं किया जाना चाहिए.

-out पैरामीटर, उस फ़ाइल के बारे में बताता है जिसमें PEM फ़ॉर्मैट में सर्टिफ़िकेट होगा. इस फ़ाइल को रजिस्टर करते समय Google को भेजा जा सकता है.

.NET क्लाइंट के लिए कुंजियां जनरेट करना

.NET फ़्रेमवर्क, PEM फ़ॉर्मैट में सेव की गई कुंजियों या सर्टिफ़िकेट को नहीं समझता. इसलिए, .pem फ़ाइल बनाने के बाद एक और चरण पूरा करना ज़रूरी है:

openssl pkcs12 -export -in test_cert.pem -inkey myrsacert.pem -out myrsacert.pfx -name "Testing Certificate"

इस चरण में, आपकी निजी कुंजी और सर्टिफ़िकेट से एक PFX फ़ाइल जनरेट होती है. इस फ़ाइल को .NET क्लाइंट लाइब्रेरी में इंपोर्ट किया जा सकता है. इससे Google Data API को किए गए अनुरोधों पर डिजिटल हस्ताक्षर किए जा सकते हैं.

Java क्लाइंट के लिए कुंजियां जनरेट करना

Java क्लाइंट, PKCS#8 फ़ॉर्मैट में निजी पासकोड स्वीकार करता है. ऊपर दिए गए निर्देशों का इस्तेमाल करके, कुंजी/सर्टिफ़िकेट जनरेट करने के बाद, जनरेट की गई .pem फ़ाइल से .pk8 फ़ाइल बनाएं:

openssl pkcs8 -in myrsakey.pem -topk8 -nocrypt -out myrsakey.pk8

इसके अलावा, आरएसए कुंजियों का जोड़ा और उससे जुड़ा सर्टिफ़िकेट बनाने के लिए, Java कीस्टोर और keytool यूटिलिटी का इस्तेमाल किया जा सकता है. इस कमांड का इस्तेमाल करें:

# Generate the RSA keys and certificate
keytool -genkey -v -alias Example -keystore ./Example.jks\
  -keyalg RSA -sigalg SHA1withRSA\
  -dname "CN=www.example.com, OU=Engineering, O=My_Company, L=Mountain  View, ST=CA, C=US"\
  -storepass changeme -keypass changeme

चेतावनी: "changeme" एक अच्छा पासवर्ड नहीं है. यह सिर्फ़ एक उदाहरण है.

-dname पैरामीटर, उस ऐप्लिकेशन की पहचान बताता है जिसके लिए सर्टिफ़िकेट जारी किया गया है. -storepass पैरामीटर, कीस्टोर को सुरक्षित रखने के लिए पासवर्ड तय करता है. -keypass पैरामीटर, निजी कुंजी को सुरक्षित रखने के लिए पासवर्ड तय करता है.

सर्टिफ़िकेट को ऐसी फ़ाइल में लिखने के लिए जिसका इस्तेमाल ManageDomains टूल में किया जा सकता है, इस कमांड का इस्तेमाल करें:

# Output the public certificate to a file
keytool -export -rfc -keystore ./Example.jks -storepass changeme \
  -alias Example -file mycert.pem

वापस सबसे ऊपर जाएं