এই ডকুমেন্টে ফ্ল্যাশ বা সিলভারলাইট অ্যাপ্লিকেশন থেকে গুগলের AuthSub প্রমাণীকরণ সিস্টেম কীভাবে ব্যবহার করবেন তা বর্ণনা করা হয়েছে।
দ্রষ্টব্য : যদি আপনি ইতিমধ্যেই ওয়েব-ভিত্তিক অ্যাপ্লিকেশনের জন্য Google এর অ্যাকাউন্ট প্রমাণীকরণ পরিষেবা AuthSub এর সাথে পরিচিত হন, তাহলে আপনি দেখতে পাবেন যে ActionScript এর জন্য AuthSub ধারণাগতভাবে খুব অনুরূপ। অন্তর্নিহিত বাস্তবায়ন ভিন্ন, কিন্তু ক্লায়েন্ট অ্যাপ্লিকেশন ডেভেলপার হিসাবে পার্থক্যগুলি আপনার কাছে গুরুত্বপূর্ণ নয়। কিছু ডকুমেন্টেশনে, যেখানে পার্থক্যটি অপ্রাসঙ্গিক, আমরা ActionScript এর জন্য AuthSub কে সংক্ষেপে "AuthSub" হিসাবে উল্লেখ করি।
AuthSub for ActionScript ইন্টারফেসটি ব্যবহারকারীর পক্ষ থেকে Flash বা Silverlight অ্যাপ্লিকেশনগুলিকে সুরক্ষিত Google Data API ফিডগুলিতে প্রমাণীকরণ করতে দেয়। উচ্চ স্তরের নিরাপত্তা বজায় রাখার জন্য, ইন্টারফেসটি ব্যবহারকারীর অ্যাকাউন্ট লগইন তথ্য কখনও পরিচালনা না করেই অ্যাপ্লিকেশনটিকে একটি প্রমাণীকরণ টোকেন পেতে সক্ষম করে।
ActionScript-এর জন্য AuthSub হল JavaScript-এর জন্য AuthSub- এর একটি রূপ। JavaScript-এর জন্য AuthSub-এর মতো, এটি ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে একটি নন-Google ডোমেনে হোস্ট করা ওয়েব পৃষ্ঠা থেকে প্রমাণীকরণের জন্য একটি ক্রস-ডোমেন পদ্ধতি প্রদান করে। এটি স্ট্যান্ডার্ড AuthSub-এর থেকে আলাদা যে প্রমাণীকরণ পরিষেবাটি একটি ভিন্ন ডোমেনে থাকে (www.google.com-এর পরিবর্তে accounts.googleapis.com) এবং একটি crossdomain.xml ফাইল প্রদান করে যা বহিরাগত সাইটগুলি থেকে সেই ডোমেনে অ্যাক্সেসের অনুমতি দেয়।
সমস্ত প্রমাণীকরণ পরিষেবা API ব্যবহার সম্পর্কে আলোচনার জন্য Google অ্যাকাউন্ট API গ্রুপটিও দেখুন।
পাঠকবর্গ
এই ডকুমেন্টটি সেইসব প্রোগ্রামারদের উদ্দেশ্যে তৈরি যারা ফ্ল্যাশ বা সিলভারলাইট ওয়েব অ্যাপ্লিকেশন তৈরি করছেন এবং গুগল পরিষেবা অ্যাক্সেস করেন।
এই ডকুমেন্টটি ধরে নিয়েছে যে আপনি Google Data API প্রোটোকল এবং AuthSub ইন্টারফেসের পিছনের সাধারণ ধারণাগুলি বোঝেন। এটি ধরে নিয়েছে যে আপনি ActionScript-এ প্রোগ্রামিং করতে জানেন।
সমর্থিত পরিবেশ
AuthSub for ActionScript বর্তমানে Firefox 1.5 এবং উচ্চতর এবং Internet Explorer 6.0 এবং উচ্চতর, Flash 9.0 বা উচ্চতর বা Silverlight 2.0 বা উচ্চতর সহ সমর্থিত।
অ্যাকশনস্ক্রিপ্টের জন্য AuthSub কীভাবে কাজ করে
একটি ওয়েব অ্যাপ্লিকেশন, গুগল অথেনটিকেশন পরিষেবা এবং গুগল ডেটা পরিষেবার মধ্যে যোগাযোগ কীভাবে কাজ করে তার একটি সংক্ষিপ্ত সারাংশ এখানে দেওয়া হল:
- ব্যবহারকারীর পক্ষ থেকে Google ডেটা পরিষেবা অ্যাক্সেস করার জন্য, ওয়েব অ্যাপ্লিকেশনটির একটি বৈধ প্রমাণীকরণ টোকেন থাকতে হবে। সাধারণত, অ্যাপ্লিকেশনগুলি এই টোকেনটি একটি কুকিতে সংরক্ষণ করে; যদি এই ধরণের কোনও কুকি না থাকে, তাহলে ওয়েব অ্যাপ্লিকেশনটিকে AuthSub এর মাধ্যমে টোকেনটি অর্জন করতে হবে। একটি টোকেন অর্জন করতে, ওয়েব অ্যাপ্লিকেশনটি AuthSub for ActionScript লগইন কল করে প্রমাণীকরণ পরিষেবাতে, কোন পরিষেবাটি অ্যাক্সেস করা হবে তা নির্দিষ্ট করে।
- ওয়েব অ্যাপ্লিকেশন থেকে অনুরোধ পাওয়ার পর, প্রমাণীকরণ পরিষেবা ব্যবহারকারীকে একটি "অ্যাক্সেস অনুরোধ" পৃষ্ঠায় পুনঃনির্দেশিত করে। এই পৃষ্ঠাটি ব্যবহারকারীকে তাদের Google অ্যাকাউন্টে লগ ইন করতে অনুরোধ করে এবং তাদের Google পরিষেবাতে অ্যাক্সেস মঞ্জুর বা অস্বীকার করতে বলে।
- ব্যবহারকারী ওয়েব অ্যাপ্লিকেশনে অ্যাক্সেস দেবেন নাকি দেবেন না তা নির্ধারণ করেন। যদি ব্যবহারকারী অ্যাক্সেস অস্বীকার করেন, তাহলে ওয়েব অ্যাপ্লিকেশনে ফিরে যাওয়ার পরিবর্তে তাদের একটি Google পৃষ্ঠায় পাঠানো হবে।
- যদি ব্যবহারকারী সফলভাবে লগ ইন করে এবং অ্যাক্সেস মঞ্জুর করে, তাহলে প্রমাণীকরণ পরিষেবা ব্যবহারকারীকে সেই ওয়েব অ্যাপ্লিকেশন URL-এ পুনঃনির্দেশিত করে যেটি মূল কলটি করেছিল। পুনঃনির্দেশটি একটি কোয়েরি প্যারামিটারের মাধ্যমে নির্দিষ্ট পরিষেবার জন্য একটি প্রমাণীকরণ টোকেন সরবরাহ করে। অ্যাপ্লিকেশনটি টোকেনটিকে ব্যবহারকারীর ব্রাউজারে, ওয়েব অ্যাপ্লিকেশনের ডোমেনের অধীনে কুকি হিসাবে সংরক্ষণ করবে। টোকেনটি বাতিল না হওয়া পর্যন্ত বৈধ থাকবে। (টোকেন কখন প্রত্যাহার করতে হবে সে সম্পর্কে পরামর্শের জন্য টোকেন সম্পর্কে বিভাগটি দেখুন।)
- ওয়েব অ্যাপ্লিকেশনটি গুগল ডেটা পরিষেবার সাথে যোগাযোগ করে এবং পরিষেবাটিতে প্রেরিত প্রতিটি অনুরোধের সাথে প্রমাণীকরণ টোকেন পাঠায়।
- যদি গুগল ডেটা পরিষেবা টোকেনটি চিনতে পারে, তাহলে এটি অনুরোধকৃত ডেটা সরবরাহ করে।
AuthSub for ActionScript ইন্টারফেস ব্যবহার করা
AuthSub for ActionScript, অথবা AuthSubAS, Google Data API ব্যবহার করে এমন Flash (অথবা Silverlight) অ্যাপ্লিকেশনের জন্য একটি ক্রস-ডোমেন AuthSub এন্ডপয়েন্ট প্রদান করে।
AuthSubAS google.com-এ পাওয়া AuthSub এন্ডপয়েন্টগুলির একটি মিরর প্রদান করে, একটি অতিরিক্ত crossdomain.xml ফাইল সহ যা Flash (অথবা Silverlight) কে সেই এন্ডপয়েন্টগুলিতে অ্যাক্সেস করার অনুমতি দেয়। উদাহরণস্বরূপ, https://accounts.googleapis.com/accounts/AuthSubSessionToken অ্যাক্সেস করে এন্ডপয়েন্ট AuthSubSessionToken ব্যবহার করা যেতে পারে।
নিম্নলিখিত ধাপগুলি একটি প্রমাণীকরণ টোকেন পাওয়ার এবং একটি ফ্ল্যাশ অ্যাপ্লিকেশন থেকে একটি Google পরিষেবা অ্যাক্সেস করার জন্য এটি ব্যবহার করার প্রক্রিয়ার মধ্য দিয়ে যায়।
- ক্রস-ডোমেন নীতিগুলি সেট আপ করুন।
ক্রস-ডোমেন পদ্ধতিতে ফ্ল্যাশ ব্যবহার করার জন্য, প্রতিটি বাহ্যিক ডোমেনের জন্য একটি নীতি দিয়ে এটি শুরু করতে হবে যা অ্যাক্সেস করা হবে। এটি করার জন্য, প্রতিটি ডোমেনের জন্য ActionScript পদ্ধতি
Security.loadPolicyFile( policy )ব্যবহার করুন, যেমন:<?xml version="1.0" encoding="utf-8"?> <Application xmlns="http://www.adobe.com/2006/mxml" initialize="onInitialized()" applicationComplete="onLoaded()"> <Script> import flash.external.ExternalInterface; import flash.net.navigateToURL; import mx.controls.Alert; private function onInitialized() : void { // Load the cross domain policy file for each of the googleapis.com // domains used. At the very least, we need the ones for the API (photos, // in this case) and the one for AuthSub for ActionScript (accounts). Security.loadPolicyFile('http://photos.googleapis.com/data/crossdomain.xml'); Security.loadPolicyFile('https://accounts.googleapis.com/crossdomain.xml'); }
মনে রাখবেন যে এখানে আমরা
accounts.googleapis.com(AuthSubAS) এবংphotos.googleapis.com/data(PicasaWeb, যা উদাহরণটি পরে অ্যাক্সেস করবে) এর জন্য নীতি লোড করছি। - একটি একক-ব্যবহারের টোকেনের অনুরোধ করুন।
AuthSub প্রক্রিয়ার প্রথম ধাপ হল AuthSub এন্ডপয়েন্ট থেকে একটি একক-ব্যবহারের টোকেন অনুরোধ করা। আপনার অ্যাপ্লিকেশনটি
AuthSubRequestএন্ডপয়েন্টে একটি কল করে এটি করা উচিত, যেমন:var getTokenPage : URLRequest = new URLRequest('https://www.google.com/accounts/AuthSubRequest'); // Construct the parameters of the AuthSub request. These are the same parameters // as normal AuthSub, which can be found here: /accounts/docs/AuthSub.html#AuthSubRequest var authSubParams : URLVariables = new URLVariables(); authSubParams['scope'] = 'http://photos.googleapis.com/data'; // photos API authSubParams['session'] = 1; // single-use token authSubParams['secure'] = 0; // non-secure apps authSubParams['next'] = 'photos.swf'; // The URL of this app. getTokenPage.data = authSubParams; navigateToURL(getTokenPage, '_top');
এই পদ্ধতিতে একটি স্কোপ মান প্রয়োজন। প্রতিটি Google পরিষেবা তার অনুমোদিত অ্যাক্সেসের স্কোপ নির্ধারণ করে এবং আপনাকে টোকেন অনুরোধে সেই স্কোপটি উল্লেখ করতে হবে। কোন স্কোপ মান ব্যবহার করবেন তা নির্ধারণ করতে, আপনি যে Google পরিষেবাটি অ্যাক্সেস করতে চান তার ডকুমেন্টেশন পরীক্ষা করুন। স্কোপটি একটি URL এর মতো দেখাচ্ছে; এটি পরিষেবাটি সনাক্তকারী একটি সাধারণ URL হতে পারে, অথবা এটি আরও সীমাবদ্ধ অ্যাক্সেস নির্দিষ্ট করতে পারে, যেমন কেবল-পঠনযোগ্য অ্যাক্সেস সীমিত করা। যখন পরিষেবাটি স্কোপগুলির একটি পছন্দ অফার করে, তখন সম্ভাব্য সবচেয়ে শক্তভাবে স্কোপযুক্ত টোকেনটি অনুরোধ করুন। উদাহরণস্বরূপ, Google ক্যালেন্ডারের ডেটা ফিড অ্যাক্সেস করতে,
'http://www.google.com/calendar/feeds'নয়,'http://www.google.com/calendar'স্কোপ ব্যবহার করুন।টিপস :
- আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনি একটি লগইন বোতাম বা অন্য ব্যবহারকারী ইনপুট ব্যবস্থা প্রদান করুন যা ব্যবহারকারীকে লগইন প্রক্রিয়াটি ম্যানুয়ালি শুরু করার জন্য অনুরোধ করবে। পরিবর্তে, যদি আপনি ব্যবহারকারীর ইন্টারঅ্যাকশনের জন্য অপেক্ষা না করে লোড হওয়ার সাথে সাথেই চেক এবং রিডাইরেক্ট করেন, তাহলে ব্যবহারকারী আপনার পৃষ্ঠায় পৌঁছানোর পর প্রথমেই একটি Google লগইন পৃষ্ঠা দেখতে পাবেন। যদি ব্যবহারকারী লগ ইন না করার সিদ্ধান্ত নেন, তাহলে Google তাদের আপনার পৃষ্ঠায় ফেরত পাঠাবে না; তাই ব্যবহারকারীর দৃষ্টিকোণ থেকে, তারা আপনার পৃষ্ঠাটি দেখার চেষ্টা করেছিল কিন্তু তাদের পাঠানো হয়েছিল এবং কখনও ফেরত পাঠানো হয়নি। এই পরিস্থিতি ব্যবহারকারীদের জন্য বিভ্রান্তিকর এবং হতাশাজনক হতে পারে।
- যেসব অ্যাপ্লিকেশনের ব্যবহারকারীর জন্য একাধিক Google পরিষেবা অ্যাক্সেস করার প্রয়োজন হয়, তাদের প্রতিটি নতুন পরিষেবার জন্য একটি নতুন টোকেনের অনুরোধ করতে হবে (কারণ প্রতিটি পরিষেবার একটি আলাদা সুযোগ রয়েছে)।
- একটি প্রমাণীকরণ টোকেনের অনুরোধ করুন।
AuthSubRequestএন্ডপয়েন্টটি ব্যবহারকারীর ব্রাউজারের URLhttp://yourWebAppUrl?token= singleUseTokenএ সেট করে আপনার অ্যাপ্লিকেশনে একটি একক-ব্যবহারের টোকেন ফিরিয়ে দেবে। আপনার অ্যাপ্লিকেশনটি একবার তার একক-ব্যবহারের টোকেন পেয়ে গেলে, এটিকে টোকেনটি একটি বহু-ব্যবহারের (দীর্ঘস্থায়ী) টোকেনের সাথে বিনিময় করতে হবে, যা পরে Google ডেটা ফিডের বিরুদ্ধে অনুরোধ করতে ব্যবহার করা যেতে পারে। এটি করার জন্য, একক-ব্যবহারের টোকেন সহAuthSubSessionTokenপদ্ধতিতে কল করুন।আপনার অ্যাপ্লিকেশনটি লোড হওয়ার সময় URL-এ
tokenপ্যারামিটারটি পরীক্ষা করা উচিত:private function onLoaded() : void { // Once the application has loaded, check to see if an AuthSub token was
// placed into the current page's URL. If it was, the user has already
// authenticated, and we can continue to connect to the the service itself. var searchPortion : String = ExternalInterface.call('window.location.search.toString'); if (searchPortion.length > 0) { // remove the ? from the token and extract the token. searchPortion = searchPortion.substring(1); // NOTE: Real applications should parse the URL properly. if (searchPortion.indexOf('token=') == 0) { getLongLivedToken(searchPortion.substring(6)); return; } // more code ... }যদি টোকেনটি পাওয়া যায়, তাহলে এটি
getLongLivedTokenএর মতো একটি পদ্ধতি কল করবে, যাAuthSubSessionTokenএন্ডপয়েন্টকে আহ্বান করবে:private function getLongLivedToken(singleUseToken : String) : void { // Construct a call to the AuthSub for ActionScript endpoint on accounts.googleapis.com. // This call will exchange the single use token given to use by AuthSub for a long-term // token that we can use to make requests to endpoints such as Photos. var getTokenRequest : URLRequest = new URLRequest('https://accounts.googleapis.com/accounts/AuthSubSessionToken'); // Due to a bug in Flash, a URLRequest with a GET request will // not properly send headers. We therefore use POST for this and *ALL* // requests. getTokenRequest.method = URLRequestMethod.POST; // Due to a bug in Flash, a URLRequest without a valid parameter will // not properly send headers. We therefore add a useless parameter to // make this code work. getTokenRequest.data = new URLVariables('pleaseignore=ignore'); // Add the AuthSub for ActionScript headers. getTokenRequest.requestHeaders.push(new URLRequestHeader('Authorization', 'AuthSub token="' + singleUseToken + '"')); // Create the loader to get the token itself. The loader will callback // to the following event handlers if and when the server responds. var getToken : URLLoader = new URLLoader(); getToken.addEventListener(Event.COMPLETE, onGetTokenResult); getToken.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onGetTokenFailed); getToken.addEventListener(IOErrorEvent.IO_ERROR, onGetTokenFailed); try { getToken.load(getTokenRequest); } catch (e : Error) { Alert.show('Some error occurred: ' + e); }
onGetTokenResultহ্যান্ডলারের মতো একটি পদ্ধতি ফেরত আসা টোকেনটি সংরক্ষণ করবে:private function onGetTokenResult(e : Event) : void { // Load the parameters from the response. var getToken : URLLoader = URLLoader(e.target); var params : URLVariables = new URLVariables(getToken.data); // Parse the session token from the result. Real applications // might at this point store the token in a long-term cookie so // that repeated usages of the application do not require this entire // authentication process. sessionToken = params.Token; // Trim the newline from the end of the session token. sessionToken = sessionToken.substring(0, sessionToken.length - 1); }
টিপস :
- আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনার অ্যাপ্লিকেশনটি দীর্ঘমেয়াদী টোকেনটি একটি কুকিতে সংরক্ষণ করে এবং স্বল্পমেয়াদী টোকেন চেকের আগে সেগুলি পরীক্ষা করে; এটি ব্যবহারকারীদের আপনার অ্যাপ্লিকেশনটি ব্যবহার করার সময় প্রতিবার AuthSub নিশ্চিতকরণ পৃষ্ঠায় যেতে বাধা দেয়।
- একটি প্রমাণীকরণ টোকেন ব্যবহার করা।
প্রমাণীকরণ টোকেন ব্যবহার করতে, এটি একটি Google পরিষেবাতে করা যেকোনো অনুরোধের সাথে একটি
Authorizationশিরোনামের মাধ্যমে সংযুক্ত করুন:Authorization: AuthSub token="(session token goes here)"
ফটো পরিষেবার জন্য অ্যাকশনস্ক্রিপ্টে উদাহরণ:
// Prepare a request to the photos API for the private album // of the user. var albumRequest : URLRequest = new URLRequest('http://photos.googleapis.com/data/feed/api/user/default'); albumRequest.data = new URLVariables('access=private&v=2&err=xml'); // Due to a bug in Flash, a URLRequest with a GET request will // not properly send headers. We therefore use POST for this and *ALL* // requests. albumRequest.method = URLRequestMethod.POST; var authsubHeader : String = 'AuthSub token="' + sessionToken + '"'; // Add the Authorization header which uses the session token. albumRequest.requestHeaders.push(new URLRequestHeader('Authorization', authsubHeader)); // The X-HTTP-Method-Override header tells the Photos API to treat this request // as a GET request, even though it is being conducted as a POST (due to the bug // mentioned above). This is very important, as GData APIs will react differently // to different HTTP request types. albumRequest.requestHeaders.push(new URLRequestHeader('X-HTTP-Method-Override', 'GET')); // We expect ATOM XML to be returned. albumRequest.requestHeaders.push(new URLRequestHeader('Content-Type', 'application/atom+xml'));
গুগল একটি ম্যানুয়াল লগআউট বৈশিষ্ট্য প্রদানের পরামর্শ দেয়, যেমন লগআউট বোতাম বা ক্লিকযোগ্য লিঙ্ক। এই পদ্ধতি ব্যবহারকারীদের তাদের পছন্দের সময় লগ আউট করার, অথবা লগ ইন থাকার এবং পরবর্তী সময় যখন তারা আপনার অ্যাপ্লিকেশন অ্যাক্সেস করবে তখন তাদের ডেটা ফিডগুলি সুবিধাজনকভাবে উপলব্ধ রাখার বিকল্প দেয়।
টোকেন সম্পর্কে
এই বিভাগটি AuthSub দ্বারা ActionScript-এর জন্য ব্যবহৃত টোকেনগুলি বর্ণনা করে। বেশিরভাগ প্রসঙ্গে, আপনার এই তথ্য জানার প্রয়োজন হবে না।
প্রতিটি প্রমাণীকরণ টোকেন নিম্নলিখিত ডেটার সাথে নির্দিষ্ট:
- গুগল পরিষেবার পরিধি
- ব্যবহারকারীর গুগল অ্যাকাউন্ট
- ক্লায়েন্ট অ্যাপ্লিকেশন
টোকেন ডেটা নিশ্চিত করে যে শুধুমাত্র নির্দিষ্ট তৃতীয় পক্ষের অ্যাপ্লিকেশনটি ডেটা অনুরোধ করতে পারে এবং অনুরোধটি নির্দিষ্ট সুযোগ এবং ব্যবহারকারী অ্যাকাউন্ট থেকে ডেটার মধ্যে সীমাবদ্ধ।
এই স্কোপ, ব্যবহারকারী এবং ক্লায়েন্টের সমন্বয়ের জন্য যেকোনো সময়ে শুধুমাত্র একটি টোকেন বৈধ হতে পারে। একটি ওয়েব অ্যাপ্লিকেশনকে যখনই কোনও ব্যবহারকারীর জন্য নতুন Google পরিষেবা অ্যাক্সেসের প্রয়োজন হয় তখনই একটি নতুন টোকেনের অনুরোধ করতে হয়। টোকেন দ্বারা আচ্ছাদিত অ্যাক্সেসের সুযোগ Google পরিষেবার উপর নির্ভর করে, যা নির্দিষ্ট ধরণের ডেটা বা কার্যকলাপে অ্যাক্সেস সীমিত করতে বেছে নিতে পারে, যেমন পঠনযোগ্য অ্যাক্সেস।
AuthSub for ActionScript ইন্টারফেস দ্বারা ফেরত পাঠানো টোকেনটি যতবার প্রয়োজন ততবার ব্যবহার করা যেতে পারে যতক্ষণ না এটি প্রত্যাহার করা হয়। টোকেনের আয়ুষ্কাল পরিচালনা করা আপনার অ্যাপ্লিকেশনের উপর নির্ভর করে, সুরক্ষা এবং সুবিধার ভারসাম্য বজায় রাখা। Google প্রতিবার নতুন সেশন শুরু হওয়ার সময় একটি নতুন টোকেনের অনুরোধ করার পরামর্শ দেয়।
কিছু Google পরিষেবা শুধুমাত্র নিবন্ধিত এবং সুরক্ষিত টোকেন ব্যবহার করে এমন ওয়েব অ্যাপ্লিকেশনগুলিকে অ্যাক্সেসের অনুমতি দিতে পারে। AuthSub for ActionScript এই ধরনের পরিষেবাগুলির জন্য সমর্থিত নয়। সুরক্ষিত টোকেন ব্যবহার করার জন্য, আপনার প্রতিষ্ঠানকে Google-এর সাথে একটি SSL সার্টিফিকেট নিবন্ধন করতে হবে এবং সেই ডেটা ফিডগুলির জন্য সমস্ত অনুরোধে স্বাক্ষর করতে হবে।