সেপ্টেম্বর 2008
ভূমিকা
এটি বিকাশকারীদের জন্য একটি উত্তেজনাপূর্ণ সময়। আমরা ওয়েব জুড়ে বেশ কয়েকটি উন্মুক্ত মান গৃহীত হতে দেখতে শুরু করছি, এবং আপনি জানেন যে, Google সর্বদা মানগুলির একটি বিশাল অনুরাগী এবং ওপেন সোর্স সম্প্রদায়কে উৎসাহিত করছে৷
সম্প্রতি, সমস্ত Google ডেটা APIs OAuth- এর জন্য সমর্থন গ্রহণ করেছে, একটি উন্মুক্ত প্রোটোকল যার লক্ষ্য ডেস্কটপ এবং ওয়েব অ্যাপ্লিকেশনগুলি ব্যবহারকারীর ব্যক্তিগত ডেটা অ্যাক্সেস করার উপায়কে মানসম্মত করা। OAuth একটি প্রমিত এবং নিরাপদ ফ্যাশনে API প্রমাণীকরণ সম্পাদনের একটি উপায় প্রদান করে। প্রোগ্রামার হিসাবে, যেখানে সম্ভব সেখানে কোড পুনরায় ব্যবহার করতে আমাদের শেখানো হয়। OAuth ডেভেলপারদের তাদের লেখা ডুপ্লিকেট কোডের পরিমাণ কমাতে সাহায্য করবে এবং বিভিন্ন প্রদানকারীর একাধিক পরিষেবার সাথে কাজ করে এমন টুল তৈরি করা সহজ করবে।
শ্রোতা
এই নিবন্ধটি অনুমান করে যে আপনি এক বা একাধিক Google ডেটা API এর সাথে পরিচিত কিন্তু অগত্যা OAuth এর পিছনের ধারণাগুলি নয়৷ আপনি যদি শুরু করছেন, বা OAuth সম্পর্কে জানতে আগ্রহী, তাহলে আর তাকাবেন না। এই নিবন্ধটি আপনাকে ধারণাগুলির একটি মৌলিক ভিত্তি দেবে। আমি Google এর OAuth বাস্তবায়নের বিশদ বিবরণ নিয়েও আলোচনা করব।
এই দস্তাবেজটি এমন ডেভেলপারদের জন্যও বোঝানো হয়েছে যারা AuthSub ব্যবহার করার সাথে পরিচিত, বিশেষ করে উন্নত নিরাপত্তা মোডের সাথে নিবন্ধিত । আমরা চলতে চলতে, আমি দুটি প্রোটোকলের মধ্যে মিল এবং পার্থক্য হাইলাইট করার চেষ্টা করব। আপনার যদি AuthSub ব্যবহার করে এমন অ্যাপ্লিকেশন থাকে, তাহলে আপনি এই তথ্যটি OAuth-এ স্থানান্তর করতে ব্যবহার করতে পারেন, যা একটি আরও খোলা, আধুনিক প্রোটোকল।
একটু পরিভাষা
OAuth বোঝা মানেই এর পরিভাষা বোঝা। ওয়েব অ্যাপ্লিকেশন ডকুমেন্টেশনের জন্য OAuth স্পেসিফিকেশন এবং Google-এর OAuth প্রমাণীকরণ নির্দিষ্ট সংজ্ঞার উপর অনেক বেশি নির্ভর করে, তাই Google-এর OAuth বাস্তবায়নের প্রসঙ্গে প্রতিটির অর্থ কী তা স্পষ্ট করা যাক।
- "OAuth নাচ"
সম্পূর্ণ OAuth প্রমাণীকরণ/অনুমোদন প্রক্রিয়া বর্ণনা করার জন্য আমার অনানুষ্ঠানিক পদ।
- (OAuth) টোকেন অনুরোধ করুন
একটি প্রাথমিক টোকেন যা Google কে জানতে দেয় যে আপনার অ্যাপ্লিকেশনটি Google ডেটা APIগুলির একটিতে অ্যাক্সেসের অনুরোধ করছে৷ OAuth নৃত্যের দ্বিতীয় ধাপ হল ব্যবহারকারীকে তাদের ডেটাতে ম্যানুয়ালি অ্যাক্সেস দেওয়ার জন্য। এই পদক্ষেপ সফল হলে, অনুরোধ টোকেন অনুমোদিত হয়.
- (OAuth) অ্যাক্সেস টোকেন
নাচের শেষ ধাপ হল একটি অ্যাক্সেস টোকেনের জন্য অনুমোদিত অনুরোধ টোকেন বিনিময় করা। একবার আপনার অ্যাপ্লিকেশানে এই টোকেনটি হয়ে গেলে, টোকেন প্রত্যাহার না করা পর্যন্ত ব্যবহারকারীকে আবার OAuth নাচের মধ্য দিয়ে যেতে হবে না।
AuthSub এর সাথে সাদৃশ্য:
একটি OAuth অ্যাক্সেস টোকেন একটি নিরাপদ AuthSub সেশন টোকেন হিসাবে একই জিনিস। - (OAuth) এন্ডপয়েন্ট
এগুলি হল একটি অ্যাপ্লিকেশন প্রমাণীকরণ এবং একটি অ্যাক্সেস টোকেন পাওয়ার জন্য প্রয়োজনীয় URI৷ মোট তিনটি আছে - OAuth প্রক্রিয়ার প্রতিটি ধাপের জন্য একটি। Google এর OAuth শেষ পয়েন্টগুলি হল:
একটি অনুরোধ টোকেন পান: https://www.google.com/accounts/OAuthGetRequestToken
অনুরোধ টোকেন অনুমোদন করুন: https://www.google.com/accounts/OAuthAuthorizeToken
একটি অ্যাক্সেস টোকেনে আপগ্রেড করুন: https://www.google.com/accounts/OAuthGetAccessToken
AuthSub এর সাথে সাদৃশ্য:
একটি অ্যাক্সেস টোকেনের জন্য একটি অনুমোদিত অনুরোধ টোকেন বিনিময় করাhttps://www.google.com/accounts/AuthSubRequestToken
এবংhttps://www.google.com/accounts/AuthSubSessionToken
এ একটি দীর্ঘ-স্থায়ী সেশন টোকেনে একক-ব্যবহারের AuthSub টোকেন আপগ্রেড করার অনুরূপ।https://www.google.com/accounts/AuthSubSessionToken
, যথাক্রমে। পার্থক্য হল যে AuthSub-এর একটি প্রাথমিক অনুরোধ টোকেনের ধারণা নেই। পরিবর্তে, ব্যবহারকারীAuthSubRequestToken
অনুমোদন পৃষ্ঠা থেকে টোকেন প্রক্রিয়া শুরু করে। - (OAuth) পরিষেবা প্রদানকারী
Google Data API-এর ক্ষেত্রে, এই প্রদানকারী হল Google। সাধারণভাবে, পরিষেবা প্রদানকারী ওয়েবসাইট বা ওয়েব পরিষেবা বর্ণনা করতে ব্যবহৃত হয় যা OAuth এন্ডপয়েন্ট প্রদান করে। OAuth পরিষেবা প্রদানকারীর আরেকটি উদাহরণ হল MySpace।
- (OAuth) ভোক্তা
একটি ব্যবহারকারীর ডেটা (যেমন আপনার অ্যাপ্লিকেশন) অ্যাক্সেস করার অনুমতির অনুরোধকারী প্রোগ্রাম। OAuth প্রোটোকল নমনীয় যে এটি বিভিন্ন ধরণের ক্লায়েন্ট (ওয়েব, ইনস্টল, ডেস্কটপ, মোবাইল) এর জন্য অনুমতি দেয়।
দ্রষ্টব্য : যদিও OAuth প্রোটোকল ডেস্কটপ/ইনস্টল করা অ্যাপ্লিকেশন ব্যবহারের ক্ষেত্রে সমর্থন করে, Google শুধুমাত্র ওয়েব অ্যাপ্লিকেশনের জন্য OAuth সমর্থন করে।
শুরু হচ্ছে
নিবন্ধন
আপনি Google ডেটা API-এর সাথে OAuth ব্যবহার শুরু করার আগে অল্প পরিমাণ সেটআপ আছে। যেহেতু সমস্ত OAuth অনুরোধগুলি অবশ্যই ডিজিটালভাবে স্বাক্ষরিত হতে হবে, আপনাকে প্রথমে আপনার ডোমেন নিবন্ধন করতে হবে এবং Google-এ একটি সর্বজনীন শংসাপত্র আপলোড করতে হবে৷ ওয়েব-ভিত্তিক অ্যাপ্লিকেশানগুলির জন্য নিবন্ধন এবং নিবন্ধীকৃত মোডের সাথে ব্যবহারের জন্য কী এবং শংসাপত্রগুলি তৈরি করার জন্য নিবন্ধন দেখুন কীভাবে এটি করতে হয় সে সম্পর্কে আরও তথ্যের জন্য৷
সই অনুরোধ
একবার আপনার ডোমেন নিবন্ধিত হয়ে গেলে, আপনি অনুরোধগুলি স্বাক্ষর করা শুরু করতে প্রস্তুত৷ OAuth-এর সবচেয়ে কঠিন ধারণাগুলির মধ্যে একটি হল কিভাবে সঠিকভাবে oauth_signature
এবং সিগনেচার বেস স্ট্রিং এর ধারণা তৈরি করা যায়। বেস স্ট্রিং হল সেই ডেটা যা আপনি আপনার ব্যক্তিগত কী দিয়ে সাইন ইন করুন ( RSA_SHA1
ব্যবহার করে)। ফলাফল হল আপনি oauth_signature
এর জন্য যে মান সেট করেছেন।
উদাহরণ অনুরোধ
http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime
এ ব্যবহারকারীর Google ক্যালেন্ডারের একটি তালিকা GET
বেস স্ট্রিং বিন্যাস | base_string = http-method&base-http-request-url&normalized-string-of-oauth_parameters |
---|---|
উদাহরণ বেস স্ট্রিং | GET&http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull&oauth_consumer_key%3Dexample.com%26oauth_nonce%3D4572616e48616d6d%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D137131200%26oauth_token%3D1%252Fab3cd9j4ks73hf7g%26oauth_version%3D1.0%26orderby%3Dstarttime |
উদাহরণ HTTP অনুরোধ | GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: OAuth oauth_token="1%2Fab3cd9j4ks73hf7g", oauth_signature_method="RSA-SHA1", oauth_signature="wOJIO9AvZbTSMK%2FPY%3D...", oauth_consumer_key="example.com", oauth_timestamp="137131200", oauth_nonce="4572616e48616d6d", oauth_version="1.0" |
দ্রষ্টব্য : এটি শুধুমাত্র প্রতিনিধিত্ব হিসাবে বোঝানো হয়েছে। আপনার oauth_signature
অনেক দীর্ঘ হবে।
বেস স্ট্রিং এর নোট:
-
orderby=starttime
ক্যোয়ারী প্যারামিটারটি লেক্সিকোগ্রাফিক্যাল বাইট ভ্যালু অর্ডারিং-এ বাকিoauth_*
প্যারামিটারের সাথে সাজানো হয়েছে। - এই স্ট্রিংটিতে একটি '?'ও নেই। চরিত্র
-
base-http-request-url
অংশে শুধুমাত্র url-এনকোড করা বেস ইউআরএল থাকে:http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull
-
oauth_token
ডবল url-এনকোডেড।
Authorization
হেডারে নোট:
-
Authorization
হেডারেoauth_*
প্যারামিটারের ক্রম কোন ব্যাপার নয়। - শিরোনাম বেস স্ট্রিং হিসাবে
orderby=starttime
অন্তর্ভুক্ত করে না। সেই ক্যোয়ারী প্যারামিটার অনুরোধ URL এর অংশ হিসাবে রক্ষণাবেক্ষণ করা হয়।
OAuth ব্যবহার করে অনুরোধ স্বাক্ষর করার বিষয়ে আরও তথ্যের জন্য, OAuth অনুরোধ স্বাক্ষর করা দেখুন।
AuthSub থেকে পার্থক্য:
একটি তুলনা হিসাবে, এখানে নিরাপদ AuthSub ব্যবহার করে একই উদাহরণ:
বেস স্ট্রিং বিন্যাস | base_string = http-method http-request-URL timestamp nonce |
---|---|
উদাহরণ বেস স্ট্রিং | GET http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull%3Forderby%3Dstarttime 137131200 4572616e48616d6d |
উদাহরণ HTTP অনুরোধ | GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: AuthSub token="GD32CMCL25aZ-v____8B" data="GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime 137131200 4572616e48616d6d" sig="MCwCFrV93K4agg==..." sigalg="rsa-sha1" |
AuthSub ব্যবহার করে অনুরোধ স্বাক্ষর করার বিষয়ে আরও তথ্যের জন্য, AuthSub অনুরোধ স্বাক্ষর করা দেখুন।
OAuth খেলার মাঠ টুল
উদ্দেশ্য
কিছু ব্যবহারকারী পরামর্শ দিয়েছেন যে OAuth-এর উচ্চ শিক্ষা বক্ররেখা রয়েছে। Google এর অন্যান্য প্রমাণীকরণ API এর তুলনায়, আমি একমত হব। OAuth-এর সুবিধা স্পষ্ট হবে যখন আপনি অন্যান্য (নন-Google) পরিষেবাগুলি ব্যবহার করার জন্য আপনার অ্যাপটি প্রসারিত করবেন। প্রমাণীকরণ কোডের একটি একক অংশ লেখা যা বিভিন্ন পরিষেবা প্রদানকারী এবং তাদের API গুলি জুড়ে কাজ করে, আমার কাছে বেশ ভাল লাগছে। আপনি এখন প্রোটোকল শেখার জন্য পরে নিজেকে ধন্যবাদ জানাবেন।
OAuth প্লেগ্রাউন্ড হল এমন একটি টুল যা আমি ডেভেলপারদের তাদের OAuth সমস্যার সমাধান করতে সাহায্য করার জন্য তৈরি করেছি। আপনি সমস্যাগুলি ডিবাগ করতে, আপনার নিজস্ব বাস্তবায়ন পরীক্ষা করতে বা Google ডেটা API-এর সাথে পরীক্ষা করতে সাহায্য করতে খেলার মাঠ ব্যবহার করতে পারেন।
এটার কাজ কি?
- OAuth প্রমাণীকরণ প্রবাহকে চিত্রিত করে: একটি অনুরোধ টোকেন আনা, টোকেন অনুমোদন করা এবং এটিকে একটি অ্যাক্সেস টোকেনে আপগ্রেড করা।
- প্রতিটি অনুরোধের জন্য সঠিক স্বাক্ষর বেস স্ট্রিং প্রদর্শন করে।
- প্রতিটি অনুরোধের জন্য সঠিক
Authorization
শিরোনাম প্রদর্শন করে। - একটি প্রমাণীকৃত Google ডেটা ফিডের সাথে ইন্টারঅ্যাক্ট করতে কিভাবে একটি
oauth_token
ব্যবহার করে তা প্রদর্শন করে। আপনি ডেটাGET
/POST
/PUT
/DELETE
করতে পারেন। - আপনার ব্রাউজারে সরাসরি একটি প্রমাণীকৃত ফিড দেখুন।
- আপনাকে আপনার নিজস্ব
oauth_consumer_key
(আপনার নিবন্ধিত ডোমেন) এবং ব্যক্তিগত কী পরীক্ষা করার অনুমতি দেয়। - আপনার
oauth_token
এ কি কি Google ডেটা ফিড পরিষেবা উপলব্ধ তা আবিষ্কার করুন।
ডেমো রান
ধাপ 1: আপনার সুযোগ(গুলি) চয়ন করুনপ্রথমে, এক বা একাধিক স্কোপ বেছে নিয়ে আপনি কোন API ব্যবহার করতে চান তা স্থির করুন। এই প্রদর্শনীতে, আমি একটি টোকেন অনুরোধ করছি যা ব্লগার এবং Google পরিচিতিগুলির সাথে কাজ করবে৷ AuthSub এর সাথে সাদৃশ্য: | |
ধাপ 2: OAuth প্যারামিটার এবং সেটিংস পরিবর্তন করুন আপাতত, "OAuth প্যারামিটারগুলি সংশোধন করুন" বাক্সে কোনো সেটিংস পরিবর্তন করবেন না৷ পরবর্তীতে, আপনি আপনার নিবন্ধিত ডোমেনে দ্রষ্টব্য : AuthSub থেকে পার্থক্য: | |
ধাপ 3-5: অ্যাক্সেস টোকেন অর্জন করুনএকটি OAuth অ্যাক্সেস টোকেন পাওয়ার জন্য তিনটি ধাপ রয়েছে৷ প্রথম ধাপ হল একটি অনুরোধ টোকেন পুনরুদ্ধার করা। এটি Google কে জানতে দেয় যে আপনার অ্যাপ্লিকেশনটি OAuth নাচ শুরু করছে৷ প্রথমে, "টোকেন পান" বাক্সে "রিকোয়েস্ট টোকেন" বোতামে ক্লিক করুন। কিছু নির্দিষ্ট ক্ষেত্র ডেটা দিয়ে পূর্ণ হবে।
| |
এরপর, "টোকেন পান" বাক্সে "অনুমোদিত" বোতামে ক্লিক করুন৷ এই অনুমোদন পৃষ্ঠায়, অনুরোধ টোকেন অনুমোদন করতে "অ্যাক্সেস মঞ্জুর করুন" বোতামে ক্লিক করুন এবং OAuth খেলার মাঠে পুনরায় নির্দেশিত হবে৷ AuthSub এর সাথে সাদৃশ্য: AuthSub থেকে পার্থক্য: টিপ : আপনি যদি একটি ওয়েব অ্যাপ্লিকেশন লিখছেন তাহলে একটি | |
অবশেষে, "টোকেন পান" বাক্সে "অ্যাক্সেস টোকেন" বোতামে ক্লিক করুন। এই ক্রিয়াটি অনুমোদিত অনুরোধ টোকেন (লাল "অ্যাক্সেস টোকেন" দ্বারা উল্লিখিত) লেবেল আপগ্রেড করে। আপনি যদি একটি নতুন টোকেন আনতে চান, OAuth নাচ পুনরায় আরম্ভ করতে "শুরু করুন" এ ক্লিক করুন৷ এখন আমরা আকর্ষণীয় কিছু করতে পারি! |
অ্যাক্সেস টোকেন ব্যবহার করে
এখন আপনি ফিড জিজ্ঞাসা করতে, সন্নিবেশ করান, আপডেট করতে বা ডেটা মুছতে প্রস্তুত৷ এই শেষ তিনটি HTTP পদ্ধতি সম্পাদন করার সময় দয়া করে যত্ন নিন কারণ আপনি আপনার আসল ডেটা নিয়ে কাজ করছেন!
টিপ : আপনার অ্যাক্সেস টোকেনে উপলব্ধ ফিডগুলি আবিষ্কার করতে, "উপলব্ধ ফিড" বোতামটি ক্লিক করুন৷
এখানে একটি উদাহরণ প্রশ্ন: GET http://www.blogger.com/feeds/1982051675575479214/posts/default?max-results=3
এই উদাহরণটি একটি নির্দিষ্ট ব্লগে তিনটির বেশি পোস্ট দেয় না। আপনি সিনট্যাক্স হাইলাইট করা এলাকার নীচে "ব্রাউজারে দেখুন" লিঙ্কে ক্লিক করে সরাসরি আপনার ব্রাউজারে ফিরে আসা ফিড/এন্ট্রি দেখতে পারেন।
উদাহরণ: কিভাবে একটি পোস্ট আপডেট করতে হয়
- আপনি যে পোস্টটি আপডেট করতে চান তাতে একটি rel="edit" সহ
<link>
উপাদানটি সনাক্ত করুন৷ এটির মত কিছু হওয়া উচিত:<link rel="edit" href="http://www.blogger.com/feeds/1982051675575479214/posts/default/8138973184593279875"/>
"একটি Google ডেটা ফিড লিখুন" ইনপুটে href URLটি আটকান৷
- সিনট্যাক্স হাইলাইট করা প্যানেলের শীর্ষে "ভিউ প্লেইন" ক্লিক করে বিদ্যমান এন্ট্রির XML অনুলিপি করুন৷ শুধুমাত্র প্রতিক্রিয়া বডি কপি করুন, হেডার নয়।
- HTTP পদ্ধতির ড্রপডাউনকে
PUT
এ পরিবর্তন করুন। - সেই ড্রপডাউনের নীচে "পোস্ট ডেটা লিখুন" ক্লিক করুন এবং পপআপে
<entry>
XML পেস্ট করুন। - "চালনা" বোতামে ক্লিক করুন।
সার্ভার একটি 200 OK
দিয়ে সাড়া দেবে।
টিপ : edit
লিঙ্কটি ম্যানুয়ালি অনুলিপি করার পরিবর্তে, 'সিনট্যাক্স হাইলাইট?' চেকবক্স একটি প্রশ্নের পরে, আপনি XML প্রতিক্রিয়া সংস্থাগুলির মধ্যে লিঙ্কগুলিতে ক্লিক করতে সক্ষম হবেন৷
উপসংহার
AtomPub/Atom পাবলিশিং প্রোটোকল ( Google Data API- এর অন্তর্নিহিত প্রোটোকল) এবং OAuth-এর মতো প্রযুক্তিগুলি ওয়েবকে এগিয়ে নিয়ে যেতে সাহায্য করে। যত বেশি সাইট এই মানগুলি গ্রহণ করতে শুরু করে, আমরা বিকাশকারীরা বিজয়ী। একটি হত্যাকারী অ্যাপ তৈরি করা হঠাৎ করে কম দুঃসাধ্য হয়ে ওঠে।
OAuth খেলার মাঠের বিষয়ে বা Google API-এর সাথে OAuth ব্যবহার করার বিষয়ে আপনার কোনো প্রশ্ন বা মন্তব্য থাকলে, অনুগ্রহ করে আমাদের G Suite APIs এবং Marketplace APIs সাপোর্ট ফোরামে যান।