সতর্কতা : এই পৃষ্ঠাটি গুগলের পুরোনো এপিআই, গুগল ডেটা এপিআই সম্পর্কে; এটি শুধুমাত্র গুগল ডেটা এপিআই ডিরেক্টরিতে তালিকাভুক্ত এপিআইগুলির জন্য প্রাসঙ্গিক, যার মধ্যে অনেকগুলি নতুন এপিআই দিয়ে প্রতিস্থাপিত হয়েছে। একটি নির্দিষ্ট নতুন এপিআই সম্পর্কে তথ্যের জন্য, নতুন এপিআইয়ের ডকুমেন্টেশন দেখুন। একটি নতুন এপিআই দিয়ে অনুরোধ অনুমোদন সম্পর্কে তথ্যের জন্য, গুগল অ্যাকাউন্টস প্রমাণীকরণ এবং অনুমোদন দেখুন।
এই ডকুমেন্টটি বর্ণনা করে যে কীভাবে Google Data API ক্লায়েন্ট লাইব্রেরি ব্যবহার করে ওয়েব অ্যাপ্লিকেশনের জন্য Google এর AuthSub প্রমাণীকরণের সাথে সংযোগ স্থাপন করতে হয়।
AuthSub ইন্টারফেস একটি ওয়েব-ভিত্তিক অ্যাপ্লিকেশনকে একজন ব্যবহারকারীর পক্ষ থেকে একটি Google পরিষেবা অ্যাক্সেস করার অনুমতি দেয়। উচ্চ স্তরের নিরাপত্তা বজায় রাখার জন্য, AuthSub ইন্টারফেসটি ব্যবহারকারীর অ্যাকাউন্ট লগইন তথ্য পরিচালনা না করেই অ্যাপ্লিকেশনটিকে একটি প্রমাণীকরণ টোকেন পেতে সক্ষম করে।
Google Data API ক্লায়েন্ট লাইব্রেরিগুলি আপনার ওয়েব অ্যাপ্লিকেশনে AuthSub ব্যবহারে সহায়তা করার জন্য পদ্ধতি প্রদান করে। বিশেষ করে, অনুরোধ URL তৈরি করার, একটি একক-ব্যবহার প্রমাণীকরণ টোকেন অর্জন করার, একটি সেশন টোকেনের জন্য একক-ব্যবহার টোকেন বিনিময় করার এবং অনুরোধে স্বাক্ষর করার পদ্ধতি রয়েছে।
দ্রষ্টব্য : জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরির নিজস্ব AuthSub এর স্বাদ আছে, যাকে AuthSubJS বলা হয়। আপনার জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনগুলিতে AuthSubJS কীভাবে ব্যবহার করবেন সে সম্পর্কে তথ্যের জন্য, জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরির সাথে "AuthSub" প্রমাণীকরণ ব্যবহার করা দেখুন।
পাঠকবর্গ
এই ডকুমেন্টটি সেইসব প্রোগ্রামারদের জন্য তৈরি যারা চান যে তাদের ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলি ব্যবহারকারীদের পক্ষ থেকে Google ডেটা API ক্লায়েন্ট লাইব্রেরি ব্যবহার করে Google পরিষেবাগুলি অ্যাক্সেস করুক।
এই ডকুমেন্টটি ধরে নিচ্ছে যে আপনি AuthSub ইন্টারফেস এবং আপনার ওয়েব অ্যাপ্লিকেশনে AuthSub অন্তর্ভুক্ত করার সাধারণ প্রক্রিয়ার সাথে পরিচিত। AuthSub এর প্রোটোকলের সম্পূর্ণ বিবরণের জন্য, ওয়েব অ্যাপ্লিকেশনের জন্য AuthSub প্রমাণীকরণ দেখুন।
ক্লায়েন্ট লাইব্রেরি ছাড়াই AuthSub এবং Google ডেটা API ব্যবহার করা
যদি আপনি চান যে আপনার ওয়েব অ্যাপ্লিকেশন ক্লায়েন্ট AuthSub কে একটি প্রমাণীকরণ সিস্টেম হিসেবে ব্যবহার করে একটি Google ডেটা পরিষেবার সাথে ইন্টারঅ্যাক্ট করুক, তাহলে আপনার যা জানা দরকার তা হল AuthSub Authentication for Web Applications -এ । আপনি যদি না চান তবে Google Data APIs ক্লায়েন্ট লাইব্রেরি ব্যবহার করার দরকার নেই।
আপনার অ্যাপ্লিকেশনটি AuthSub ব্যবহার করে কীভাবে একজন ব্যবহারকারীকে প্রমাণীকরণ করতে পারে তার একটি রূপরেখা এখানে দেওয়া হল:
আপনার অ্যাপ্লিকেশনটি উপযুক্ত AuthSub URL তৈরি করে এবং তারপর ব্যবহারকারীকে সেই URL-এ পাঠায় যাতে তারা লগ ইন করতে পারে; AuthSub সিস্টেম ব্যবহারকারীকে আপনার সাইটের নির্দিষ্ট URL-এ ফেরত পাঠায় এবং একটি একবার ব্যবহারযোগ্য টোকেন ফেরত দেয়; আপনার অ্যাপ্লিকেশন ঐচ্ছিকভাবে সেই টোকেনটিকে একটি সেশন টোকেনের সাথে বিনিময় করে; তারপর আপনার অ্যাপ্লিকেশনটি পরিষেবাতে পাঠানো প্রতিটি অনুরোধের সাথে Authorization হেডারে টোকেনটি পাঠায়।
গুগল ডেটা এপিআই ক্লায়েন্ট লাইব্রেরিগুলি আপনার জন্য বিভিন্ন বিবরণ পরিচালনা করে এই অনুমোদন প্রক্রিয়াটিকে সহজ করে তোলে। এই নথিটি কীভাবে তা ব্যাখ্যা করে।
AuthSub এবং Google ডেটা API-এর সাথে কাজ করা: ক্লায়েন্ট লাইব্রেরির উদাহরণ
এই বিভাগটি AuthSub ডকুমেন্টেশনের " Working With 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 তিনটি ভিন্ন মোডে ব্যবহার করা যেতে পারে, unregistered , registered , এবং registered with enhanced security । এই ডকুমেন্টের বাকি অংশে শেষ বিকল্পটিকে secured AuthSub হিসেবে উল্লেখ করা হবে। যদিও unregistered/registered mode নিরাপদ AuthSub এর চেয়ে সেট আপ করা সহজ, Google আপনাকে তাদের উন্নত নিরাপত্তার জন্য নিরাপদ টোকেন ব্যবহার করতে উৎসাহিত করে।
কিভাবে নিবন্ধন করবেন
ওয়েব-ভিত্তিক অ্যাপ্লিকেশনের জন্য নিবন্ধন নির্বাচন করলে আপনার আবেদনের নিম্নলিখিত সুবিধাগুলি পাওয়া যাবে:
- উচ্চ স্তরের নিরাপত্তা।
- গুগল কর্তৃক বিশ্বস্ত (গুগল অনুমোদন পৃষ্ঠায় ব্যবহারকারীকে কোনও সতর্কতা দেখানো হয় না)।
নিবন্ধিত + সুরক্ষিত AuthSub
যদি আপনি নিরাপদ AuthSub বেছে নেন, তাহলে আপনার ওয়েব অ্যাপ্লিকেশন নিবন্ধন করার পাশাপাশি আপনাকে একটি স্ব-স্বাক্ষরকারী RSA প্রাইভেট কী এবং পাবলিক সার্টিফিকেট জোড়া তৈরি করতে হবে। X.509 সার্টিফিকেট তৈরির উদাহরণগুলির জন্য নিবন্ধিত মোডের সাথে ব্যবহারের জন্য (নীচে) কী এবং সার্টিফিকেট তৈরি করা দেখুন।
Determine the scope of your data access
প্রতিটি গুগল পরিষেবা একটি scope মান নির্ধারণ করে যা ব্যবহারকারীর ডেটাতে একটি টোকেনের অ্যাক্সেস নির্ধারণ করে (এবং সম্ভবত সংকুচিত করে)। উপলব্ধ scope মানগুলির তালিকার জন্য প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী দেখুন।
যেহেতু আমরা গুগল ক্যালেন্ডার এপিআই-এর সাথে ইন্টারঅ্যাক্ট করার সিদ্ধান্ত নিয়েছি, তাই এর scope http://www.google.com/calendar/feeds/ হওয়া উচিত।
দ্রষ্টব্য : যদি আপনার আরও সূক্ষ্ম সীমাবদ্ধতার প্রয়োজন না হয়, তাহলে সর্বদা স্কোপ মানটি যতটা সম্ভব বিস্তৃত URL-এ সেট করুন। উদাহরণস্বরূপ, 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 ডেটা API অ্যাক্সেস করে এমন টোকেন তৈরি করতে, প্রতিটি স্কোপকে একটি url-এনকোডেড স্পেস দিয়ে আলাদা করুন। নীচের উদাহরণটি একটি টোকেন তৈরি করে যা ব্যবহারকারীর Google Contacts এবং Google Calendar ডেটা উভয়েরই অ্যাক্সেস পাবে।
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 http://www.example.com/RetrieveToken?token=DQAADKEDE এর মতো একটি URL-এ পুনঃনির্দেশিত করে। আপনার অ্যাপ্লিকেশনটি তার 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 anAuthSubTokenorSecureAuthSubTokenobject. # 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 anAuthSubTokenorSecureAuthSubTokenobject. # 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)
একটি সেশন টোকেনের অনুরোধ করুন
URL থেকে আপনি যে টোকেনটি উদ্ধার করবেন তা সর্বদা একটি একক-ব্যবহারের টোকেন। পরবর্তী ধাপ হল 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 পেশ করার পরিবর্তে আপনার 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
.নেট
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
পিএইচপি
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 ব্যবহার করার সময়, আপনার ব্যক্তিগত কী নিজেই নেটওয়ার্কের মাধ্যমে পাঠানো হয় না। ক্লায়েন্ট লাইব্রেরিগুলি আপনার কী দিয়ে অনুরোধ স্বাক্ষর করে তৈরি অনন্য স্বাক্ষরটি পাঠায়, কী নিজেই নয়।
সেশন টোকেন ব্যবহার করুন
AuthSub ডকুমেন্টেশনে বর্ণিত Authorization হেডারে টোকেনটি রেখে সার্ভারে অনুরোধগুলি প্রমাণীকরণের জন্য আপনি সেশন টোকেন ব্যবহার করতে পারেন।
আপনার সেশন টোকেন সেট করার পরে, আপনি টোকেন সম্পর্কে চিন্তা না করেই পরিষেবার সাথে ইন্টারঅ্যাক্ট করার জন্য স্ট্যান্ডার্ড Google Data APIs ক্লায়েন্ট লাইব্রেরি কলগুলি ব্যবহার করতে পারেন। বিস্তারিত জানার জন্য, আপনি যে পরিষেবা এবং ভাষার সাথে ইন্টারঅ্যাক্ট করছেন তার জন্য ক্লায়েন্ট লাইব্রেরি ডকুমেন্টেশন এবং Google Data 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 সেশন টোকেনগুলির মেয়াদ শেষ হয় না; আপনার ক্লায়েন্ট যতক্ষণ প্রয়োজন ততক্ষণ সেশন টোকেন সংরক্ষণ করতে পারে।
অতএব, যখন আপনার ক্লায়েন্ট সেশন টোকেন ব্যবহার করে কাজ শেষ করে, তখন এটি AuthSubRevokeToken হ্যান্ডলার ব্যবহার করে টোকেনটি প্রত্যাহার করতে পারে, যেমনটি AuthSub ডকুমেন্টেশনে বর্ণিত হয়েছে।
উদাহরণস্বরূপ, যদি আপনি একটি ঐতিহ্যবাহী সেশন-জাতীয় পদ্ধতিতে টোকেন পরিচালনা করতে চান, তাহলে আপনার ক্লায়েন্ট ব্যবহারকারীর সেশনের শুরুতে একটি টোকেন পেতে পারেন এবং ব্যবহারকারীর সেশনের শেষে এটি প্রত্যাহার করতে পারেন।
টোকেন প্রত্যাহার করতে প্রতিটি ক্লায়েন্ট লাইব্রেরিতে নিম্নলিখিতগুলি ব্যবহার করুন:
জাভা
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);If you're using secure AuthSub, pass in your Zend_Gdata_HttpClient so the request is signed with your RSA private key:
$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken, $client);পাইথন
calendar_service.RevokeAuthSubToken()
অতিরিক্ত সম্পদ এবং নমুনা
- Google ডেটা API টিপস ব্লগে AuthSub উদাহরণ
- পাইথন ক্লায়েন্ট লাইব্রেরি AuthSub নমুনা
- জাভা ক্লায়েন্ট লাইব্রেরি AuthSub নমুনা
- প্রবন্ধ: .NET ক্লায়েন্ট লাইব্রেরির সাথে AuthSub ব্যবহার করা
- প্রবন্ধ: জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরির সাথে "AuthSub" প্রমাণীকরণ ব্যবহার করা
নিরাপদ AuthSub-এর সাথে ব্যবহারের জন্য একটি স্ব-স্বাক্ষরকারী ব্যক্তিগত কী এবং পাবলিক সার্টিফিকেট তৈরি করা
ব্যক্তিগত কীটি একটি স্বাক্ষর তৈরি করতে ব্যবহৃত হয়, যা প্রতিটি অনুরোধের সাথে অন্তর্ভুক্ত করতে হবে। সার্টিফিকেটে এমবেড করা পাবলিক কীটি গুগল স্বাক্ষর যাচাই করার জন্য ব্যবহার করে। পাবলিক কীটি অবশ্যই PEM ফর্ম্যাটে X.509 সার্টিফিকেটে এনকোড করা একটি 1024-বিট RSA কী হতে হবে। নিবন্ধনের সময় সার্টিফিকেটটি গুগলে পাঠানো উচিত।
নিম্নলিখিত বিভাগগুলিতে দুটি নির্দিষ্ট সরঞ্জাম ব্যবহার করে কী এবং সার্টিফিকেট তৈরি করার উদাহরণ দেওয়া হয়েছে: OpenSSL ইউটিলিটি এবং জাভার keytool ইউটিলিটি।
এই উদাহরণগুলি Google Data API-এর জন্য নির্দিষ্ট নয়; আপনি যেকোনো উদ্দেশ্যে কী তৈরি করতে একই ইউটিলিটি ব্যবহার করতে পারেন।
উদাহরণগুলি ধরে নিয়েছে যে আপনার কোম্পানির নাম My_Company, এবং এটি মার্কিন যুক্তরাষ্ট্রের ক্যালিফোর্নিয়ার মাউন্টেন ভিউতে অবস্থিত, যার ডোমেইন নাম 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 ডেটা API-তে করা অনুরোধগুলি ডিজিটালি স্বাক্ষর করার জন্য এই ফাইলটি .NET ক্লায়েন্ট লাইব্রেরিতে আমদানি করা যেতে পারে।
জাভা ক্লায়েন্টের জন্য কী তৈরি করা হচ্ছে
জাভা ক্লায়েন্ট PKCS#8 ফর্ম্যাটে প্রাইভেট কী গ্রহণ করে। উপরের নির্দেশাবলী ব্যবহার করে একটি কী/সার্ট তৈরি করার পরে, আপনার তৈরি করা .pem ফাইল থেকে একটি .pk8 ফাইল তৈরি করুন:
openssl pkcs8 -in myrsakey.pem -topk8 -nocrypt -out myrsakey.pk8
বিকল্পভাবে, আপনি জাভা কী স্টোর এবং keytool ইউটিলিটি ব্যবহার করে 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