OAuth 2.0 প্রোটোকলটি বর্তমানে সবচেয়ে জনপ্রিয় এবং সুরক্ষিত অথেনটিকেশন এবং অথোরাইজেশন প্রোটোকল, যা ওয়েব অ্যাপ্লিকেশন এবং মোবাইল অ্যাপ্লিকেশনগুলিতে সহজেই ইন্টিগ্রেট করা যায়। এটি ব্যবহারকারীদের তাদের পাসওয়ার্ড শেয়ার না করে তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলিকে তাদের ডেটা বা রিসোর্স অ্যাক্সেস করার অনুমতি দেয়।
নিচে Web Applications এবং Mobile Apps-এ OAuth 2.0 এর ইন্টিগ্রেশন কিভাবে করা হয় তা বিস্তারিত আলোচনা করা হয়েছে।
1. Web Applications এ OAuth 2.0 এর ইন্টিগ্রেশন
Web Applications-এর জন্য OAuth 2.0 সাধারণত Authorization Code Grant ফ্লো ব্যবহার করে। এটি একটি সুরক্ষিত অথেনটিকেশন প্রক্রিয়া যা ক্লায়েন্ট সাইড এবং সার্ভার সাইড উভয়ের জন্য উপযুক্ত।
OAuth 2.0 Web Application Integration Steps:
অথোরাইজেশন রিকোয়েস্ট (Authorization Request):
ওয়েব অ্যাপ্লিকেশন প্রথমে ব্যবহারকারীকে Authorization Server-এ রিডিরেক্ট করে। সেখানে ব্যবহারকারী তাদের পরিচয় যাচাই করে এবং অ্যাপ্লিকেশনকে ডেটা অ্যাক্সেস করার অনুমতি দেয়।উদাহরণ:
https://authorization-server.com/auth? response_type=code& client_id=your_client_id& redirect_uri=https://yourapp.com/callback& scope=email+profileএখানে:
- response_type: কোড রিটার্নের জন্য
code। - client_id: অ্যাপ্লিকেশনের ইউনিক আইডি।
- redirect_uri: ব্যবহারকারী সফলভাবে লগ ইন করলে যেখানে রিডিরেক্ট হবে।
- scope: অ্যাক্সেসের জন্য প্রয়োজনীয় অনুমতি।
- response_type: কোড রিটার্নের জন্য
- ব্যবহারকারী অনুমোদন (User Authorization):
ব্যবহারকারী লগ ইন করে এবং ওয়েব অ্যাপ্লিকেশনকে নির্দিষ্ট ডেটা অ্যাক্সেস করার অনুমতি দেয়। অনুমোদন দেওয়া হলে, Authorization Server একটি Authorization Code প্রদান করে। Authorization Code Exchange:
Authorization Code পাওয়ার পর, ওয়েব অ্যাপ্লিকেশন এটি ব্যবহার করে Access Token পেতে Token Endpoint-এ রিকোয়েস্ট পাঠায়।উদাহরণ:
POST /oauth/token HTTP/1.1 Host: authorization-server.com Content-Type: application/x-www-form-urlencoded grant_type=authorization_code& code=authorization_code_from_previous_step& redirect_uri=https://yourapp.com/callback& client_id=your_client_id& client_secret=your_client_secretAccess Token গ্রহন:
Authorization Server যদি কোডটি বৈধ মনে করে, তাহলে একটি Access Token প্রদান করে যা ব্যবহারকারীকে তাদের ডেটা অ্যাক্সেস করতে সহায়ক।উদাহরণ:
{ "access_token": "your_access_token", "token_type": "bearer", "expires_in": 3600 }- API Access:
ওয়েব অ্যাপ্লিকেশন এই Access Token ব্যবহার করে API-এর মাধ্যমে ব্যবহারকারীর ডেটা অ্যাক্সেস করতে পারে।
2. Mobile Apps এ OAuth 2.0 এর ইন্টিগ্রেশন
Mobile Apps এ OAuth 2.0 ব্যবহারের জন্য Implicit Grant ফ্লো বা Authorization Code Grant (PKCE সহ) ব্যবহার করা হয়। মোবাইল অ্যাপ্লিকেশনগুলি সাধারণত ক্লায়েন্ট সাইড অ্যাপ্লিকেশন হওয়ায় Implicit Grant ফ্লো খুবই জনপ্রিয়। তবে, নিরাপত্তা কারণে, Authorization Code Grant with PKCE-ও বেশ ব্যবহৃত হয়।
OAuth 2.0 Mobile Application Integration Steps:
অথোরাইজেশন রিকোয়েস্ট (Authorization Request):
মোবাইল অ্যাপ্লিকেশন প্রথমে ব্যবহারকারীকে Authorization Server-এ রিডিরেক্ট করে। এখানে কোড বা টোকেন সরাসরি মোবাইল অ্যাপ্লিকেশনে প্রদান করা হয়।উদাহরণ:
https://authorization-server.com/auth? response_type=token& client_id=your_client_id& redirect_uri=myapp://callback& scope=email+profileএখানে:
- response_type:
token(Implicit Flow-এর জন্য)। - redirect_uri: মোবাইল অ্যাপ্লিকেশনটির URI যেখানে টোকেন সরাসরি রিডিরেক্ট হবে (অথবা
myapp://callbackনামক URI ব্যবহার করা হয়)।
- response_type:
- ব্যবহারকারী অনুমোদন (User Authorization):
ব্যবহারকারী লগ ইন করে এবং মোবাইল অ্যাপ্লিকেশনকে তাদের ডেটা অ্যাক্সেস করার অনুমতি দেয়। Access Token গ্রহন:
ব্যবহারকারী অনুমোদন দিলে, Authorization Server একটি Access Token সরাসরি মোবাইল অ্যাপ্লিকেশনকে পাঠায় (Implicit Flow-এর ক্ষেত্রে)। যদি Authorization Code Grant (PKCE) ব্যবহার করা হয়, তাহলে Authorization Code প্রদান করা হবে, যা পরবর্তীতে Access Token এ রূপান্তরিত হবে।উদাহরণ (Implicit Flow):
{ "access_token": "your_access_token", "token_type": "bearer", "expires_in": 3600 }- Access Token ব্যবহার করা:
মোবাইল অ্যাপ্লিকেশন এই Access Token ব্যবহার করে API রিকোয়েস্ট পাঠায় এবং ব্যবহারকারীর ডেটা অ্যাক্সেস করে।
Web এবং Mobile Apps-এ OAuth 2.0 এর ব্যবহারের পার্থক্য
| বৈশিষ্ট্য | Web Applications | Mobile Applications |
|---|---|---|
| প্রবাহ | Authorization Code Grant | Implicit Grant বা Authorization Code Grant (PKCE) |
| টোকেন পরিচালনা | Server-side (তথ্য সংরক্ষণ নিরাপদ) | Client-side (ব্রাউজার বা ডিভাইসে সংরক্ষণ) |
| নিরাপত্তা | Secure with server-side storage | কম সুরক্ষা; PKCE সহ Authorization Code ব্যবহার করা উত্তম |
| URL Redirect | ওয়েব ব্রাউজার ব্যবহার | মোবাইল অ্যাপ্লিকেশনে URI স্কিমে রিডিরেক্ট |
| Access Token স্থায়িত্ব | স্বল্প মেয়াদী (সুরক্ষিত) | সুরক্ষিত নয়; অ্যাক্সেস টোকেন দ্রুত এক্সপায়ার হতে পারে |
সারাংশ
OAuth 2.0 ইন্টিগ্রেশন ওয়েব এবং মোবাইল অ্যাপ্লিকেশনগুলিতে ব্যবহারকারীদের তাদের তথ্য অ্যাক্সেস করতে অনুমতি দেয়, তবে পাসওয়ার্ড শেয়ার না করে। ওয়েব অ্যাপ্লিকেশনগুলিতে সাধারণত Authorization Code Grant ফ্লো ব্যবহৃত হয়, যেখানে একটি কোড এক্সচেঞ্জ করা হয় এবং মোবাইল অ্যাপ্লিকেশনগুলিতে Implicit Grant বা Authorization Code Grant (PKCE) ব্যবহৃত হয়, যেখানে দ্রুত এবং সহজে অ্যাক্সেস টোকেন প্রাপ্ত করা হয়। তবে, মোবাইল অ্যাপ্লিকেশনগুলির জন্য নিরাপত্তা বাড়াতে PKCE ব্যবহারের পরামর্শ দেওয়া হয়।
Read more