Google डेटा प्रोटोकॉल क्लाइंट लाइब्रेरी में AuthSub

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

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

AuthSub इंटरफ़ेस, वेब-आधारित ऐप्लिकेशन को उपयोगकर्ता की ओर से Google सेवा को ऐक्सेस करने देता है. उच्च स्तर की सुरक्षा बनाए रखने के लिए, AuthSub इंटरफ़ेस ऐप्लिकेशन को उपयोगकर्ता की खाता प्रवेश जानकारी प्रबंधित किए बिना प्रमाणीकरण टोकन पाने देता है.

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

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

दर्शक

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

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

क्लाइंट लाइब्रेरी के बिना AuthSub और Google डेटा एपीआई का इस्तेमाल करना

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

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

आपका ऐप्लिकेशन सही AuthSub यूआरएल बनाता है और फिर उपयोगकर्ता को उस यूआरएल पर भेजता है ताकि वे लॉग इन कर सकें; AuthSub सिस्टम उपयोगकर्ता को आपकी बताई गई साइट पर मौजूद यूआरएल पर वापस भेजता है और एक बार इस्तेमाल किए जाने वाले टोकन दिखाता है; आपका ऐप्लिकेशन उस टोकन को एक्सचेंज करता है. इसके बाद आपका ऐप्लिकेशन अनुरोध को अनुमति वाले हेडर में भेजता है.

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

AuthSub और Google डेटा एपीआई के साथ काम करना: क्लाइंट लाइब्रेरी के उदाहरण

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

इस उदाहरण में, हम Google Calendar के साथ इंटरैक्ट करने वाले वेब ऐप्लिकेशन में AuthSub इंटरफ़ेस को इंटिग्रेट कर रहे हैं. हालांकि, उदाहरण देखने के लिए आपको 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 तय करते हैं, तो आपको अपने वेब ऐप्लिकेशन को रजिस्टर करने के अलावा खुद हस्ताक्षर करने वाली आरएसए निजी कुंजी और सार्वजनिक प्रमाणपत्र जोड़ी बनानी होगी. 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 जैसे छोटे दायरे से, टोकन को सभी कैलेंडर या फ़ुल फ़ीड पर ऐक्सेस नहीं कर पाएगा. scope=http://www.google.com/calendar/feeds/ का इस्तेमाल करने पर, Calendar के सभी फ़ीड को ऐक्सेस किया जा सकता है: http://www.google.com/calendar/feeds/*.

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

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

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

सिंगल-यूज़ ऑथेंटिकेशन टोकन के लिए अनुरोध करना

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

अपने ऐप्लिकेशन में 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)

"अगला" यूआरएल बनाने के बाद, आपका ऐप्लिकेशन उपयोगकर्ता को 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 सिस्टम उपयोगकर्ता को आपके दिए गए "अगले" यूआरएल का इस्तेमाल करके वापस आपके ऐप्लिकेशन पर रीडायरेक्ट करता है.

सिंगल-यूज़ टोकन निकालें

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

अगर आपका ऐप्लिकेशन, उपयोगकर्ता के ब्राउज़र में AuthSub सिस्टम पर उसे भेजने से पहले उसे पुष्टि करने वाली कुकी सेट करता है, तो जब Google "अगला" यूआरएल पर वापस रीडायरेक्ट करता है, तब आपका ऐप्लिकेशन यह पुष्टि करने के लिए पुष्टि करने वाली कुकी पढ़ सकता है कि कौनसे उपयोगकर्ता उस यूआरएल पर आए हैं. आप इस तरह की कुकी का इस्तेमाल, अपने ऐप्लिकेशन में User-ID को 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 का इस्तेमाल कर रहे हैं, तो आपको एक्सचेंज करने से पहले अपनी आरएसए निजी कुंजी सेट करनी होगी. यहां हर क्लाइंट लाइब्रेरी का इस्तेमाल करने वाले कुछ उदाहरण दिए गए हैं:

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 को पास करने के बजाय अपनी RSA निजी कुंजी को 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 को पास करने के बजाय अपनी RSA निजी कुंजी को 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 दस्तावेज़ में बताया गया है.

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

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

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

Java

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

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

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

.NET

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

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

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

PHP

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

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

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

Python

token_info = calendar_service.AuthSubTokenInfo()

किसी सेशन का टोकन निरस्त करना

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

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

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

किसी टोकन को निरस्त करने के लिए, प्रत्येक क्लाइंट लाइब्रेरी में निम्न का उपयोग करें:

Java

AuthSubUtil.revokeToken(sessionToken, null);

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

AuthSubUtil.revokeToken(sessionToken, privateKey);

.NET

AuthSubUtil.revokeToken(sessionToken, null);

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

AuthSubUtil.revokeToken(sessionToken, privateKey);

PHP

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

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

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

Python

calendar_service.RevokeAuthSubToken()

अतिरिक्त संसाधन और सैंपल

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

सुरक्षित AuthSub के साथ इस्तेमाल करने के लिए खुद हस्ताक्षर करने वाली निजी कुंजी और सार्वजनिक प्रमाणपत्र जनरेट करना

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

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

ये उदाहरण, खास तौर पर Google डेटा एपीआई के लिए नहीं हैं. इन उपयोगिताओं की मदद से, किसी भी मकसद से कुंजियां जनरेट की जा सकती हैं.

उदाहरण के लिए, आपकी कंपनी का नाम 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 क्लाइंट मेमोरी#8 फ़ॉर्मैट में निजी कुंजियां स्वीकार करता है. ऊपर दिए गए निर्देशों का इस्तेमाल करके कोई कुंजी/सर्टिफ़िकेट जनरेट करने के बाद, जनरेट की गई .pem फ़ाइल से एक .pk8 फ़ाइल बनाएं:

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

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

# 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

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