Google ডেটা প্রোটোকল ক্লায়েন্ট লাইব্রেরিতে AuthSub

সতর্কতা : এই পৃষ্ঠাটি Google-এর পুরানো API, Google Data APIs সম্পর্কে; এটি শুধুমাত্র Google Data APIs ডিরেক্টরিতে তালিকাভুক্ত APIগুলির সাথে প্রাসঙ্গিক, যার মধ্যে অনেকগুলি নতুন API দিয়ে প্রতিস্থাপিত হয়েছে৷ একটি নির্দিষ্ট নতুন API সম্পর্কে তথ্যের জন্য, নতুন API এর ডকুমেন্টেশন দেখুন। একটি নতুন API-এর সাহায্যে অনুরোধ অনুমোদনের বিষয়ে তথ্যের জন্য, Google অ্যাকাউন্ট প্রমাণীকরণ এবং অনুমোদন দেখুন।

ওয়েব অ্যাপ্লিকেশনের জন্য Google এর AuthSub প্রমাণীকরণের সাথে সংযোগ করতে কীভাবে Google Data API ক্লায়েন্ট লাইব্রেরিগুলি ব্যবহার করতে হয় এই নথিটি বর্ণনা করে৷

AuthSub ইন্টারফেস একটি ওয়েব-ভিত্তিক অ্যাপ্লিকেশনকে ব্যবহারকারীর পক্ষে Google পরিষেবা অ্যাক্সেস করার অনুমতি দেয়। উচ্চ স্তরের নিরাপত্তা বজায় রাখার জন্য, AuthSub ইন্টারফেস অ্যাপ্লিকেশনটিকে ব্যবহারকারীর অ্যাকাউন্ট লগইন তথ্য পরিচালনা না করে একটি প্রমাণীকরণ টোকেন পেতে সক্ষম করে।

Google Data API ক্লায়েন্ট লাইব্রেরিগুলি আপনাকে আপনার ওয়েব অ্যাপ্লিকেশনে AuthSub ব্যবহার করতে সাহায্য করার পদ্ধতিগুলি প্রদান করে৷ বিশেষভাবে, অনুরোধ URL তৈরি করার, একটি একক-ব্যবহারের প্রমাণীকরণ টোকেন অর্জন, একটি সেশন টোকেনের জন্য একক-ব্যবহারের টোকেন বিনিময় এবং অনুরোধে স্বাক্ষর করার পদ্ধতি রয়েছে৷

দ্রষ্টব্য : JavaScript ক্লায়েন্ট লাইব্রেরির AuthSub এর নিজস্ব স্বাদ রয়েছে, যাকে বলা হয় AuthSubJS। আপনার JavaScript অ্যাপ্লিকেশনগুলিতে AuthSubJS কীভাবে ব্যবহার করবেন সে সম্পর্কে তথ্যের জন্য, JavaScript ক্লায়েন্ট লাইব্রেরির সাথে "AuthSub" প্রমাণীকরণ ব্যবহার করা দেখুন।

শ্রোতা

এই দস্তাবেজটি এমন প্রোগ্রামারদের উদ্দেশ্যে যারা তাদের ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলিকে Google ডেটা APIs ক্লায়েন্ট লাইব্রেরি ব্যবহার করে ব্যবহারকারীদের পক্ষ থেকে Google পরিষেবাগুলি অ্যাক্সেস করতে চান৷

এই নথিটি অনুমান করে যে আপনি AuthSub ইন্টারফেস এবং আপনার ওয়েব অ্যাপ্লিকেশনে AuthSub অন্তর্ভুক্ত করার সাধারণ প্রক্রিয়ার সাথে পরিচিত৷ AuthSub এর প্রোটোকলের সম্পূর্ণ বিবরণের জন্য, ওয়েব অ্যাপ্লিকেশনের জন্য AuthSub প্রমাণীকরণ দেখুন।

ক্লায়েন্ট লাইব্রেরি ছাড়া AuthSub এবং Google ডেটা API ব্যবহার করা

আপনি যদি চান যে আপনার ওয়েব অ্যাপ্লিকেশন ক্লায়েন্ট একটি প্রমাণীকরণ সিস্টেম হিসাবে AuthSub ব্যবহার করে একটি Google ডেটা পরিষেবার সাথে ইন্টারঅ্যাক্ট করুক, তাহলে ওয়েব অ্যাপ্লিকেশনের জন্য AuthSub প্রমাণীকরণে আপনার যা কিছু জানতে হবে তা হল৷ আপনি যদি না চান তাহলে আপনাকে Google Data APIs ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে হবে না।

AuthSub ব্যবহার করে আপনার অ্যাপ্লিকেশন কীভাবে একজন ব্যবহারকারীকে প্রমাণীকরণ করতে পারে তার একটি রূপরেখা এখানে রয়েছে:

আপনার অ্যাপ্লিকেশন উপযুক্ত AuthSub URL তৈরি করে এবং তারপর ব্যবহারকারীকে সেই URL-এ পাঠায় যাতে তারা লগ ইন করতে পারে; AuthSub সিস্টেম ব্যবহারকারীকে আপনার সাইটের URL-এ ফেরত পাঠায় যা আপনি নির্দিষ্ট করেছেন এবং একটি একবার-ব্যবহারের টোকেন ফেরত দেয়; আপনার অ্যাপ্লিকেশন ঐচ্ছিকভাবে একটি সেশন টোকেনের জন্য টোকেন বিনিময় করে; তারপর আপনার অ্যাপ্লিকেশনটি প্রতিটি অনুরোধের সাথে অনুমোদন শিরোনামে টোকেন পাঠায় যা অ্যাপ্লিকেশনটি পরিষেবাতে পাঠায়।

Google Data APIs ক্লায়েন্ট লাইব্রেরিগুলি আপনার জন্য বিভিন্ন বিবরণ পরিচালনা করে এই অনুমোদন প্রক্রিয়াটিকে সহজ করে। এই নথি ব্যাখ্যা করে কিভাবে.

AuthSub এবং Google Data API-এর সাথে কাজ করা: ক্লায়েন্ট লাইব্রেরির উদাহরণ

এই বিভাগটি AuthSub ডকুমেন্টেশনের " AuthSub এর সাথে কাজ করা " বিভাগে বর্ণিত পদক্ষেপগুলি অনুসরণ করতে Google Data APIs ক্লায়েন্ট লাইব্রেরি পদ্ধতিগুলি ব্যবহার করার একটি উদাহরণ দেখায়৷

এই উদাহরণে, আমরা AuthSub ইন্টারফেসটিকে একটি ওয়েব অ্যাপ্লিকেশনে একীভূত করছি যা Google ক্যালেন্ডারের সাথে ইন্টারঅ্যাক্ট করে (যদিও উদাহরণটি অনুসরণ করার জন্য আপনাকে Google ক্যালেন্ডার সম্পর্কে কিছু জানার প্রয়োজন নেই)। উদাহরণটি অনুমান করে যে ওয়েব অ্যাপ্লিকেশনটি example.com এ হোস্ট করা হয়েছে।

কোন ধরনের টোকেন ব্যবহার করবেন তা নির্ধারণ করুন ( session=0 বা session=1 )

আপনি একক-ব্যবহারের টোকেন ( session=0 ) বা সেশন টোকেন ( session=1 ) ব্যবহার করতে বেছে নিতে পারেন। এই নথিটি সেশন টোকেন ব্যবহার করবে, কারণ এগুলি একাধিক API অনুরোধ করবে এমন অ্যাপ্লিকেশনগুলিতে আরও কার্যকর। AuthSub ডকুমেন্টেশনে যেমন আলোচনা করা হয়েছে, আপনি যদি আপনার ওয়েব অ্যাপ্লিকেশনে সেশন টোকেন ব্যবহার করার সিদ্ধান্ত নেন, তাহলে আপনাকে টোকেন স্টোরেজ নিজেই পরিচালনা করতে হবে। এই নথিটি টোকেন ব্যবস্থাপনা কভার করে না। এছাড়াও মনে রাখবেন যে session=0 এর সাথে অনুরোধ করা টোকেনগুলিকে পরবর্তীতে দীর্ঘস্থায়ী সেশন টোকেনে বিনিময় (আপগ্রেড) করা যাবে না।

আপনার ওয়েব অ্যাপ্লিকেশন নিবন্ধন করবেন কিনা তা স্থির করুন ( secure=0 বা secure=1 )

AuthSub তিনটি ভিন্ন মোডে ব্যবহার করা যেতে পারে, অনিবন্ধিত , নিবন্ধিত এবং উন্নত নিরাপত্তার সাথে নিবন্ধিত । এই নথির অবশিষ্টাংশ শেষ বিকল্পটিকে সুরক্ষিত AuthSub হিসাবে উল্লেখ করবে। যদিও অনিবন্ধিত/নিবন্ধিত মোড সুরক্ষিত AuthSub এর চেয়ে সেট আপ করা সহজ, Google আপনাকে তাদের উন্নত নিরাপত্তার জন্য নিরাপদ টোকেন ব্যবহার করতে উৎসাহিত করে।

কিভাবে নিবন্ধন করবেন

ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য নিবন্ধন নির্বাচন করা আপনার অ্যাপ্লিকেশনকে নিম্নলিখিত সুবিধা দেয়:

  1. নিরাপত্তা একটি উচ্চ স্তরের.
  2. Google দ্বারা বিশ্বস্ত হওয়া (Google অনুমোদন পৃষ্ঠায় ব্যবহারকারীর কাছে কোন সতর্কতা প্রদর্শিত হয় না)।

নিবন্ধিত + নিরাপদ AuthSub

আপনি যদি নিরাপদ AuthSub-এর সিদ্ধান্ত নেন, তাহলে আপনার ওয়েব অ্যাপ্লিকেশন নিবন্ধন করার পাশাপাশি আপনাকে একটি স্ব-স্বাক্ষরকারী RSA ব্যক্তিগত কী এবং সর্বজনীন শংসাপত্রের জোড়া তৈরি করতে হবে। X.509 সার্টিফিকেট তৈরির উদাহরণের জন্য নিবন্ধিত মোডের সাথে ব্যবহারের জন্য কী এবং সার্টিফিকেট তৈরি করা দেখুন (নীচে)।

আপনার ডেটা অ্যাক্সেসের সুযোগ নির্ধারণ করুন

প্রতিটি Google পরিষেবা একটি scope মান নির্ধারণ করে যা ব্যবহারকারীর ডেটাতে একটি টোকেনের অ্যাক্সেস নির্ধারণ করে (এবং সম্ভবত সংকীর্ণ করে)। উপলব্ধ scope মান তালিকার জন্য FAQ দেখুন।

যেহেতু আমরা Google ক্যালেন্ডার 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/ ব্যবহার করা ক্যালেন্ডারের সমস্ত ফিডে অ্যাক্সেসের অনুমতি দেবে: http://www.google.com/calendar/feeds/*

মাল্টি-স্কোপড টোকেন

একাধিক Google ডেটা এপিআই অ্যাক্সেস করে এমন টোকেন তৈরি করতে, প্রতিটি স্কোপকে একটি url-এনকোডেড স্থান দিয়ে আলাদা করুন। নীচের উদাহরণটি একটি টোকেন তৈরি করে যা ব্যবহারকারীর Google পরিচিতি এবং Google ক্যালেন্ডার ডেটা উভয়ই অ্যাক্সেস করতে পারবে।

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

একটি একক-ব্যবহারের প্রমাণীকরণ টোকেন অনুরোধ করুন

একটি প্রদত্ত ব্যবহারকারী এবং একটি প্রদত্ত পরিষেবার জন্য একটি AuthSub টোকেন অর্জন করতে, আপনার অ্যাপ্লিকেশনটিকে অবশ্যই ব্যবহারকারীকে AuthSubRequest URL-এ পুনঃনির্দেশ করতে হবে, যা তাদের তাদের Google অ্যাকাউন্টে লগ ইন করতে অনুরোধ করে৷ ( AuthSubRequest URL সম্পর্কে আরও তথ্যের জন্য, ওয়েব অ্যাপ্লিকেশনগুলির জন্য সম্পূর্ণ AuthSub প্রমাণীকরণ দেখুন৷)

আপনার অ্যাপ্লিকেশনে AuthSubRequest URL তৈরি করতে, প্রতিটি ক্লায়েন্ট লাইব্রেরির জন্য নিম্নলিখিতগুলি ব্যবহার করুন:

জাভা

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);

.নেট

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);

পিএইচপি

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;

পাইথন

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)

"পরবর্তী" URL তৈরি করার পরে, আপনার অ্যাপ্লিকেশন ব্যবহারকারীকে AuthSubRequest হ্যান্ডলারে পাঠাতে বিভিন্ন উপায়ে এটি ব্যবহার করতে পারে৷ সর্বাধিক সাধারণ পদ্ধতি হল এমন একটি পৃষ্ঠা প্রদর্শন করা যা ব্যবহারকারীকে বলে যে তাদের Google অ্যাকাউন্ট অ্যাক্সেস করার জন্য আপনার অ্যাপ্লিকেশনকে অনুমোদন করার জন্য একটি লিঙ্ক অনুসরণ করতে হবে; তারপর লিঙ্কে অনুরোধ URL সংযুক্ত করুন। উদাহরণস্বরূপ, আপনি আপনার ওয়েব অ্যাপে নিম্নলিখিত স্ট্রিংটি আউটপুট করতে পারেন:

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 সিস্টেম তারপর ব্যবহারকারীকে আপনার প্রদত্ত "পরবর্তী" URL ব্যবহার করে আপনার অ্যাপ্লিকেশনে পুনঃনির্দেশ করে৷

একক-ব্যবহারের টোকেনটি বের করুন

যখন Google আপনার অ্যাপ্লিকেশনে পুনঃনির্দেশ করে, তখন টোকেনটি "পরবর্তী" URL-এ একটি ক্যোয়ারী প্যারামিটার হিসেবে যুক্ত করা হয়। উপরের উদাহরণগুলির ক্ষেত্রে, ব্যবহারকারী লগ ইন করার পরে, Google একটি URL-এ পুনঃনির্দেশ করে যেমন http://www.example.com/RetrieveToken?token=DQAADKEDE । আপনার অ্যাপ্লিকেশনের URL ক্যোয়ারী প্যারামিটার থেকে টোকেন মান বের করা উচিত।

যদি আপনার অ্যাপ্লিকেশন ব্যবহারকারীর ব্রাউজারে একটি প্রমাণীকরণ কুকি সেট করে তাদের AuthSub সিস্টেমে পাঠানোর আগে, তারপর Google যখন "পরবর্তী" URL-এ পুনঃনির্দেশ করে, তখন কোন ব্যবহারকারী সেই URL-এ এসেছে তা সনাক্ত করতে আপনার অ্যাপ্লিকেশনটি প্রমাণীকরণ কুকি পড়তে পারে৷ আপনি Google থেকে পুনরুদ্ধার করা AuthSub টোকেনের সাথে আপনার অ্যাপ্লিকেশনে একটি ব্যবহারকারী আইডি সংযুক্ত করতে এই জাতীয় কুকি ব্যবহার করতে পারেন।

ক্লায়েন্ট লাইব্রেরিগুলি একক-ব্যবহারের টোকেন বের করার জন্য সুবিধার পদ্ধতি প্রদান করে:

জাভা

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

.নেট

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

পিএইচপি

$singleUseToken = $_GET['token'];

পাইথন

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 ব্যবহার করেন, তাহলে আপনার RSA ব্যক্তিগত কী সেট করতে ভুলবেন না যাতে একটি 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 URL ব্যবহার করে একটি দীর্ঘস্থায়ী সেশন টোকেনের জন্য সেই টোকেনটিকে আপগ্রেড করা, যেমনটি ওয়েব অ্যাপ্লিকেশন ডকুমেন্টেশনের জন্য সম্পূর্ণ AuthSub প্রমাণীকরণে বর্ণিত হয়েছে। আপনি যদি নিরাপদ AuthSub ব্যবহার করেন, তাহলে বিনিময় করার আগে আপনাকে আপনার RSA ব্যক্তিগত কী সেট করতে হবে। এখানে প্রতিটি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে কিছু উদাহরণ রয়েছে:

জাভা

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 এ আপনার RSA ব্যক্তিগত কী পাস করুন:

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

.নেট

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 এ আপনার RSA ব্যক্তিগত কী পাস করুন:

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

পিএইচপি

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() ব্যবহার করে আপনার RSA ব্যক্তিগত কী সেট করতে হবে :

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

পাইথন

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

দ্রষ্টব্য : যতক্ষণ আপনি gdata.auth. extract_auth_sub_token_from_url (url, rsa_key=rsa_key) একক-ব্যবহারের টোকেন বের করতে।

দ্রষ্টব্য : নিরাপদ AuthSub ব্যবহার করার সময়, আপনার ব্যক্তিগত কী নিজেই নেটওয়ার্কে পাঠানো হয় না। ক্লায়েন্ট লাইব্রেরিগুলি আপনার কী দিয়ে অনুরোধে স্বাক্ষর করে তৈরি করা অনন্য স্বাক্ষর পাঠায়, কী নিজেই নয়।

সেশন টোকেন ব্যবহার করুন

আপনি অনুমোদন শিরোনামে টোকেন স্থাপন করে সার্ভারে অনুরোধগুলি প্রমাণীকরণ করতে সেশন টোকেন ব্যবহার করতে পারেন, যেমন AuthSub ডকুমেন্টেশনে বর্ণিত হয়েছে।

আপনি আপনার সেশন টোকেন সেট করার পরে, আপনি টোকেন সম্পর্কে চিন্তা না করেই পরিষেবার সাথে ইন্টারঅ্যাক্ট করতে স্ট্যান্ডার্ড Google ডেটা APIs ক্লায়েন্ট লাইব্রেরি কলগুলি ব্যবহার করতে পারেন৷ বিশদ বিবরণের জন্য, ক্লায়েন্ট লাইব্রেরি ডকুমেন্টেশন এবং আপনি যে পরিষেবা এবং ভাষার সাথে ইন্টারঅ্যাক্ট করছেন তার জন্য Google ডেটা APIs বিকাশকারী নির্দেশিকা দেখুন৷

একটি সেশন টোকেন সম্পর্কে তথ্য পুনরুদ্ধার করা হচ্ছে

আপনি যদি পরীক্ষা করতে চান যে আপনার ক্লায়েন্ট এবং সার্ভার টোকেনের পরামিতিগুলির সাথে সম্মত, আপনি টোকেনটি AuthSubTokenInfo হ্যান্ডলারের কাছে পাঠাতে পারেন, যা টোকেন সম্পর্কে তথ্য সমন্বিত নাম-মানের জোড়ার একটি সেট প্রদান করে।

জাভা

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

আপনি যদি নিরাপদ AuthSub ব্যবহার করেন, তাহলে আপনার RSA ব্যক্তিগত কী পাস করুন:

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

.নেট

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

আপনি যদি নিরাপদ AuthSub ব্যবহার করেন, তাহলে আপনার RSA ব্যক্তিগত কী পাস করুন:

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

পিএইচপি

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

আপনি যদি সুরক্ষিত AuthSub ব্যবহার করেন, তাহলে আপনার Zend_Gdata_HttpClient এ পাস করুন যাতে অনুরোধটি আপনার RSA ব্যক্তিগত কী দিয়ে স্বাক্ষরিত হয়:

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

পাইথন

token_info = calendar_service.AuthSubTokenInfo()

একটি সেশন টোকেন প্রত্যাহার করুন

AuthSub সেশন টোকেন মেয়াদ শেষ হয় না; আপনার ক্লায়েন্ট যতক্ষণ প্রয়োজন ততক্ষণ সেশন টোকেন সংরক্ষণ করতে পারে।

অতএব, যখন আপনার ক্লায়েন্ট সেশন টোকেন ব্যবহার করে সম্পন্ন হয়, তখন এটি AuthSub ডকুমেন্টেশনে বর্ণিত AuthSubRevokeToken হ্যান্ডলার ব্যবহার করে টোকেনটি প্রত্যাহার করতে পারে।

উদাহরণস্বরূপ, যদি আপনি একটি ঐতিহ্যগত সেশনের মতো পদ্ধতিতে টোকেন পরিচালনা করতে চান, তাহলে আপনার ক্লায়েন্ট ব্যবহারকারীর সেশনের শুরুতে একটি টোকেন পেতে পারে এবং ব্যবহারকারীর সেশনের শেষে এটি প্রত্যাহার করতে পারে।

একটি টোকেন প্রত্যাহার করতে প্রতিটি ক্লায়েন্ট লাইব্রেরিতে নিম্নলিখিত ব্যবহার করুন:

জাভা

AuthSubUtil.revokeToken(sessionToken, null);

আপনি যদি নিরাপদ AuthSub ব্যবহার করেন, তাহলে আপনার RSA ব্যক্তিগত কী পাস করুন:

AuthSubUtil.revokeToken(sessionToken, privateKey);

.নেট

AuthSubUtil.revokeToken(sessionToken, null);

আপনি যদি নিরাপদ AuthSub ব্যবহার করেন, তাহলে আপনার RSA ব্যক্তিগত কী পাস করুন:

AuthSubUtil.revokeToken(sessionToken, privateKey);

পিএইচপি

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

আপনি যদি সুরক্ষিত AuthSub ব্যবহার করেন, তাহলে আপনার Zend_Gdata_HttpClient এ পাস করুন যাতে অনুরোধটি আপনার RSA ব্যক্তিগত কী দিয়ে স্বাক্ষরিত হয়:

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

পাইথন

calendar_service.RevokeAuthSubToken()

অতিরিক্ত সম্পদ এবং নমুনা

উপরে ফিরে যাও

নিরাপদ AuthSub-এর সাথে ব্যবহারের জন্য একটি স্ব-স্বাক্ষরকারী ব্যক্তিগত কী এবং সর্বজনীন শংসাপত্র তৈরি করা

ব্যক্তিগত কীটি একটি স্বাক্ষর তৈরি করতে ব্যবহৃত হয়, যা প্রতিটি অনুরোধের সাথে অন্তর্ভুক্ত করা আবশ্যক। সার্টিফিকেটে এমবেড করা সর্বজনীন কী স্বাক্ষর যাচাই করতে Google ব্যবহার করে। সর্বজনীন কীটি PEM ফর্ম্যাটে X.509 শংসাপত্রে এনকোড করা একটি 1024-বিট RSA কী হতে হবে৷ নিবন্ধনের সময় সার্টিফিকেটটি Google-এ পাঠাতে হবে।

নিম্নলিখিত বিভাগগুলি দুটি নির্দিষ্ট সরঞ্জাম ব্যবহার করে কীভাবে কী এবং শংসাপত্র তৈরি করতে হয় তার উদাহরণ প্রদান করে: OpenSSL ইউটিলিটি এবং জাভা-এর keytool ইউটিলিটি।

এই উদাহরণগুলি Google Data API-এর জন্য নির্দিষ্ট নয়; আপনি যে কোনো উদ্দেশ্যে কী তৈরি করতে একই ইউটিলিটি ব্যবহার করতে পারেন।

উদাহরণগুলি অনুমান করে যে আপনার কোম্পানির নাম My_Company, এবং এটি মাউন্টেন ভিউ, ক্যালিফোর্নিয়া, US, ডোমেন নাম example.com সহ অবস্থিত৷

OpenSSL ব্যবহার করে কী তৈরি করা হচ্ছে

RSA কী এবং সংশ্লিষ্ট শংসাপত্রের একটি জোড়া তৈরি করতে, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

# 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 ফাইল তৈরি করে। Google Data API-তে করা অনুরোধগুলিকে ডিজিটালি স্বাক্ষর করতে এই ফাইলটি .NET ক্লায়েন্ট লাইব্রেরিতে আমদানি করা যেতে পারে।

জাভা ক্লায়েন্টের জন্য কী তৈরি করা হচ্ছে

জাভা ক্লায়েন্ট PKCS#8 বিন্যাসে ব্যক্তিগত কী গ্রহণ করে। উপরের নির্দেশাবলী ব্যবহার করে একটি কী/সার্ট তৈরি করার পরে, আপনার তৈরি করা .pem ফাইল থেকে একটি .pk8 ফাইল তৈরি করুন:

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

বিকল্পভাবে, আপনি জাভা কী স্টোর এবং কীটুল ইউটিলিটি ব্যবহার করতে পারেন এক জোড়া RSA কী এবং সংশ্লিষ্ট শংসাপত্র তৈরি করতে। নিম্নলিখিত কমান্ড ব্যবহার করুন:

# 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

উপরে ফিরে যাও