এই ডকুমেন্টটি IMAP AUTHENTICATE , POP AUTH , এবং SMTP AUTH কমান্ডের সাথে ব্যবহারের জন্য SASL XOAUTH2 মেকানিজমকে সংজ্ঞায়িত করে। এই মেকানিজমটি একজন ব্যবহারকারীর Gmail অ্যাকাউন্টে প্রমাণীকরণের জন্য OAuth 2.0 অ্যাক্সেস টোকেন ব্যবহারের সুযোগ দেয়।
OAuth 2.0 ব্যবহার করে
প্রথমে “Using OAuth 2.0 to Access Google APIs” ডকুমেন্টটি ভালোভাবে পড়ে নিন। ঐ ডকুমেন্টে ব্যাখ্যা করা হয়েছে OAuth 2.0 কীভাবে কাজ করে এবং একটি ক্লায়েন্ট লেখার জন্য প্রয়োজনীয় ধাপগুলো কী কী।
কার্যকরী উদাহরণের জন্য আপনি নমুনা XOAUTH2 কোডটিও দেখতে পারেন।
OAuth 2.0 স্কোপ
IMAP, POP, এবং SMTP অ্যাক্সেসের পরিধি হলো https://mail.google.com/ । আপনি যদি আপনার IMAP, POP বা SMTP অ্যাপের জন্য সম্পূর্ণ মেইল স্কোপে অ্যাক্সেসের অনুরোধ করেন, তবে তা অবশ্যই আমাদের Google API Services: User Data Policy-এর সাথে সঙ্গতিপূর্ণ হতে হবে।
- অনুমোদিত হওয়ার জন্য, আপনার অ্যাপে অবশ্যই
https://mail.google.com/-এর পূর্ণ ব্যবহার প্রদর্শন করতে হবে। - যদি আপনার অ্যাপে
https://mail.google.com/প্রয়োজন না হয়, তাহলে Gmail API-তে স্থানান্তরিত হন এবং আরও সূক্ষ্ম ও সীমাবদ্ধ স্কোপ ব্যবহার করুন।
গুগল ওয়ার্কস্পেসের জন্য ডোমেন-ব্যাপী প্রতিনিধিদল
আপনি যদি IMAP-এর মাধ্যমে Google Workspace ব্যবহারকারীদের মেইলবক্স অ্যাক্সেস করার জন্য সার্ভিস অ্যাকাউন্ট ব্যবহার করে Google Workspace ডোমেন-ব্যাপী ডেলিগেশন প্রয়োগ করতে চান, তাহলে আপনি এর পরিবর্তে https://www.googleapis.com/auth/gmail.imap_admin স্কোপটি ব্যবহার করে আপনার ক্লায়েন্টকে অনুমোদন করতে পারেন।
এই স্কোপ দিয়ে অনুমোদিত হলে, IMAP সংযোগগুলি ভিন্নভাবে আচরণ করে:
- ব্যবহারকারীরা জিমেইল সেটিংসে লেবেলের জন্য "Show in IMAP" নিষ্ক্রিয় করে রাখলেও, সমস্ত লেবেল IMAP-এর মাধ্যমে দেখানো হয়।
- জিমেইল সেটিংসে 'ফোল্ডার সাইজ লিমিটস'-এ ব্যবহারকারী যা-ই সেট করুন না কেন, সমস্ত মেসেজ IMAP-এর মাধ্যমে দেখানো হয়।
SASL XOAUTH2 প্রক্রিয়া
XOAUTH2 পদ্ধতি ক্লায়েন্টদের সার্ভারে OAuth 2.0 অ্যাক্সেস টোকেন পাঠাতে দেয়। এই প্রোটোকলটি নিম্নলিখিত বিভাগগুলিতে দেখানো এনকোডেড মান ব্যবহার করে।
প্রাথমিক ক্লায়েন্ট প্রতিক্রিয়া
SASL XOAUTH2-এর প্রাথমিক ক্লায়েন্ট প্রতিক্রিয়ার ফরম্যাটটি নিম্নরূপ:
base64("user=" {User} "^Aauth=Bearer " {Access Token} "^A^A") RFC 4648- এ সংজ্ঞায়িত base64 এনকোডিং পদ্ধতি ব্যবহার করুন। ^A হলো Control+A (\001)।
উদাহরণস্বরূপ, বেস৬৪-এনকোডিং করার আগে, ক্লায়েন্টের প্রাথমিক প্রতিক্রিয়াটি দেখতে এইরকম হতে পারত:
user=someuser@example.com^Aauth=Bearer ya29.vF9dft4qmTc2Nvb3RlckBhdHRhdmlzdGEuY29tCg^A^A
বেস৬৪-এনকোডিং করার পর এটি দাঁড়ায় (স্পষ্টতার জন্য লাইন ব্রেক যোগ করা হয়েছে):
dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYXJlciB5YTI5LnZGOWRmdDRxbVRjMk52
YjNSbGNrQmhkSFJoZG1semRHRXVZMjl0Q2cBAQ==
ত্রুটিপূর্ণ প্রতিক্রিয়া
ক্লায়েন্টের প্রাথমিক প্রতিক্রিয়ার ফলে কোনো ত্রুটি ঘটলে, সার্ভার নিম্নলিখিত বিন্যাসে একটি ত্রুটি বার্তা সম্বলিত একটি চ্যালেঞ্জ পাঠায়:
base64({JSON-Body}) JSON-Body তিনটি ভ্যালু থাকে: status , schemes , এবং scope । উদাহরণস্বরূপ:
eyJzdGF0dXMiOiI0MDEiLCJzY2hlbWVzIjoiYmVhcmVyIG1hYyIsInNjb3BlIjoiaHR0cHM6Ly9t
YWlsLmdvb2dsZS5jb20vIn0K
বেস৬৪-ডিকোডিং করার পর এটি দাঁড়ায় (স্পষ্টতার জন্য বিন্যস্ত):
{
"status":"401",
"schemes":"bearer",
"scope":"https://mail.google.com/"
}
SASL প্রোটোকল অনুযায়ী, ক্লায়েন্টদের এই চ্যালেঞ্জের জবাবে একটি খালি প্রতিক্রিয়া পাঠাতে হয়।
IMAP প্রোটোকল বিনিময়
এই অংশে জিমেইল IMAP সার্ভারের সাথে SASL XOAUTH2 কীভাবে ব্যবহার করতে হয় তা ব্যাখ্যা করা হয়েছে।
প্রাথমিক ক্লায়েন্ট প্রতিক্রিয়া
SASL XOAUTH2 মেকানিজম ব্যবহার করে লগ ইন করার জন্য, ক্লায়েন্ট XOAUTH2 মেকানিজম প্যারামিটার এবং উপরে বর্ণিত প্রাথমিক ক্লায়েন্ট রেসপন্স সহ AUTHENTICATE কমান্ডটি ব্যবহার করে। উদাহরণস্বরূপ:
[connection begins]
C: C01 CAPABILITY
S: * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA XLIST
CHILDREN XYZZY SASL-IR AUTH=XOAUTH2 AUTH=XOAUTH
S: C01 OK Completed
C: A01 AUTHENTICATE XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvb
QFhdXRoPUJlYXJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG
1semRHRXVZMjl0Q2cBAQ==
S: A01 OK Success
[connection continues...]
IMAP প্রোটোকল বিনিময় সম্পর্কে লক্ষণীয় বিষয়সমূহ:
- IMAP
AUTHENTICATEকমান্ডটি RFC 3501- এ নথিভুক্ত করা হয়েছে। - SASL-IR সক্ষমতা
AUTHENTICATEকমান্ডের প্রথম লাইনেই প্রাথমিক ক্লায়েন্ট প্রতিক্রিয়া পাঠানোর সুযোগ দেয়, ফলে প্রমাণীকরণের জন্য কেবল একবারই প্রক্রিয়া সম্পন্ন করতে হয়। SASL-IR সম্পর্কে RFC 4959- এ নথিভুক্ত করা আছে। - AUTH=XOAUTH2 ক্যাপাবিলিটি ঘোষণা করে যে সার্ভারটি এই ডকুমেন্টে সংজ্ঞায়িত SASL মেকানিজম সমর্থন করে, এবং
AUTHENTICATEকমান্ডের প্রথম আর্গুমেন্ট হিসেবে XOAUTH2 উল্লেখ করার মাধ্যমে এই মেকানিজমটি সক্রিয় করা হয়। -
AUTHENTICATEএবংCAPABILITYকমান্ডগুলিতে লাইন ব্রেকগুলি স্পষ্টতার জন্য দেওয়া হয়েছে এবং প্রকৃত কমান্ড ডেটাতে এগুলি থাকবে না। সম্পূর্ণ base64 আর্গুমেন্টটি কোনো মধ্যবর্তী স্পেস ছাড়া একটি অবিচ্ছিন্ন স্ট্রিং হওয়া উচিত, যাতে সম্পূর্ণAUTHENTICATEকমান্ডটি একটি একক লাইনের টেক্সট নিয়ে গঠিত হয়।
ত্রুটিপূর্ণ প্রতিক্রিয়া
IMAP AUTHENTICATE কমান্ডের মাধ্যমে প্রমাণীকরণ ব্যর্থতার তথ্যও ফেরত পাঠানো হয়:
[connection begins]
S: * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA XLIST
CHILDREN XYZZY SASL-IR AUTH=XOAUTH2
S: C01 OK Completed
C: A01 AUTHENTICATE XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQ
FhdXRoPUJlYXJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1s
emRHRXVZMjl0Q2cBAQ==
S: + eyJzdGF0dXMiOiI0MDEiLCJzY2hlbWVzIjoiYmVhcmVyIG1hYyIsInNjb
3BlIjoiaHR0cHM6Ly9tYWlsLmdvb2dsZS5jb20vIn0K
C:
S: A01 NO SASL authentication failed
IMAP প্রোটোকল বিনিময় সম্পর্কে লক্ষণীয় বিষয়সমূহ:
- ক্লায়েন্ট ত্রুটির বার্তা সম্বলিত চ্যালেঞ্জের জবাবে একটি খালি প্রতিক্রিয়া ("\r\n") পাঠায়।
POP প্রোটোকল বিনিময়
এই অংশে জিমেইল POP সার্ভারের সাথে SASL XOAUTH2 কীভাবে ব্যবহার করতে হয় তা ব্যাখ্যা করা হয়েছে।
প্রাথমিক ক্লায়েন্ট প্রতিক্রিয়া
SASL XOAUTH2 মেকানিজম ব্যবহার করে লগ ইন করার জন্য, ক্লায়েন্ট XOAUTH2 মেকানিজম প্যারামিটার এবং উপরে বর্ণিত প্রাথমিক ক্লায়েন্ট প্রতিক্রিয়া সহ AUTH কমান্ডটি ব্যবহার করে। উদাহরণস্বরূপ:
[connection begins]
C: AUTH XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYX
JlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMjl0
Q2cBAQ==
S: +OK Welcome.
[connection continues...]
POP প্রোটোকল বিনিময় সম্পর্কে লক্ষণীয় বিষয়সমূহ:
- POP
AUTHকমান্ডটি RFC 1734- এ নথিভুক্ত করা হয়েছে। -
AUTHকমান্ডে লাইন ব্রেকগুলো স্পষ্টতার জন্য দেওয়া হয়েছে এবং প্রকৃত কমান্ড ডেটাতে এগুলো থাকবে না। সম্পূর্ণ base64 আর্গুমেন্টটি কোনো মধ্যবর্তী স্পেস ছাড়া একটি অবিচ্ছিন্ন স্ট্রিং হওয়া উচিত, যাতে পুরোAUTHকমান্ডটি একটি একক লাইনের টেক্সট হিসেবে থাকে।
ত্রুটিপূর্ণ প্রতিক্রিয়া
POP AUTH কমান্ডের মাধ্যমে প্রমাণীকরণ ব্যর্থতার তথ্যও ফেরত দেওয়া হয়:
[connection begins]
C: AUTH XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlY
XJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMj
l0Q2cBAQ==
S: + eyJzdGF0dXMiOiI0MDAiLCJzY2hlbWVzIjoiQmVhcmVyIiwic2NvcGUi
OiJodHRwczovL21haWwuZ29vZ2xlLmNvbS8ifQ==
SMTP প্রোটোকল বিনিময়
এই অংশে জিমেইল SMTP সার্ভারের সাথে SASL XOAUTH2 কীভাবে ব্যবহার করতে হয় তা ব্যাখ্যা করা হয়েছে।
প্রাথমিক ক্লায়েন্ট প্রতিক্রিয়া
XOAUTH2 মেকানিজম ব্যবহার করে লগ ইন করার জন্য, ক্লায়েন্ট XOAUTH2 মেকানিজম প্যারামিটার এবং উপরে বর্ণিত প্রাথমিক ক্লায়েন্ট রেসপন্স সহ AUTH কমান্ডটি ব্যবহার করে। উদাহরণস্বরূপ:
[connection begins]
S: 220 mx.google.com ESMTP 12sm2095603fks.9
C: EHLO sender.example.com
S: 250-mx.google.com at your service, [172.31.135.47]
S: 250-SIZE 35651584
S: 250-8BITMIME
S: 250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
S: 250-ENHANCEDSTATUSCODES
S: 250 PIPELINING
C: AUTH XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlY
XJlciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMj
l0Q2cBAQ==
S: 235 2.7.0 Accepted
[connection continues...]
SMTP প্রোটোকল বিনিময় সম্পর্কে লক্ষণীয় বিষয়সমূহ:
- SMTP
AUTHকমান্ডটি RFC 4954- এ নথিভুক্ত করা হয়েছে। -
AUTHকমান্ডে লাইন ব্রেকগুলো স্পষ্টতার জন্য দেওয়া হয়েছে এবং প্রকৃত কমান্ড ডেটাতে এগুলো থাকবে না। সম্পূর্ণ base64 আর্গুমেন্টটি কোনো মধ্যবর্তী স্পেস ছাড়া একটি অবিচ্ছিন্ন স্ট্রিং হওয়া উচিত, যাতে পুরোAUTHকমান্ডটি একটি একক লাইনের টেক্সট হিসেবে থাকে।
ত্রুটিপূর্ণ প্রতিক্রিয়া
প্রমাণীকরণ ব্যর্থতার তথ্য SMTP AUTH কমান্ডের মাধ্যমেও জানানো হয়:
[connection begins]
S: 220 mx.google.com ESMTP 12sm2095603fks.9
C: EHLO sender.example.com
S: 250-mx.google.com at your service, [172.31.135.47]
S: 250-SIZE 35651584
S: 250-8BITMIME
S: 250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
S: 250-ENHANCEDSTATUSCODES
S: 250 PIPELINING
C: AUTH XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYXJl
ciB5YTI5LnZGOWRmdDRxbVRjMk52YjNSbGNrQmhkSFJoZG1semRHRXVZMjl0Q2cB
AQ==
S: 334 eyJzdGF0dXMiOiI0MDEiLCJzY2hlbWVzIjoiYmVhcmVyIG1hYyIsInNjb
3BlIjoiaHR0cHM6Ly9tYWlsLmdvb2dsZS5jb20vIn0K
C:
S: 535-5.7.1 Username and Password not accepted. Learn more at
S: 535 5.7.1 https://support.google.com/mail/?p=BadCredentials hx9sm5317360pbc.68
[connection continues...]
SMTP প্রোটোকল বিনিময় সম্পর্কে লক্ষণীয় বিষয়সমূহ:
- ক্লায়েন্ট ত্রুটির বার্তা সম্বলিত চ্যালেঞ্জের জবাবে একটি খালি প্রতিক্রিয়া ("\r\n") পাঠায়।
তথ্যসূত্র
- OAUTH2: গুগল এপিআই অ্যাক্সেস করতে OAuth 2.0 ব্যবহার
- SMTP: RFC 2821: সরল মেইল স্থানান্তর প্রোটোকল
- IMAP: RFC 3501: ইন্টারনেট বার্তা অ্যাক্সেস প্রোটোকল - সংস্করণ 4rev1
- পিওপি: আরএফসি ১০৮১: পোস্ট অফিস প্রোটোকল - সংস্করণ ৩
- SASL: RFC 4422: সরল প্রমাণীকরণ এবং নিরাপত্তা স্তর (SASL)
- JSON: RFC 4627: জাভাস্ক্রিপ্ট অবজেক্ট নোটেশনের জন্য application/json মিডিয়া টাইপ
- BASE64: RFC 4648: Base16, Base32, এবং Base64 ডেটা এনকোডিংসমূহ
- SASL-IR: RFC 4959: সিম্পল অথেন্টিকেশন অ্যান্ড সিকিউরিটি লেয়ার (SASL)-এর জন্য IMAP এক্সটেনশন প্রাথমিক ক্লায়েন্ট প্রতিক্রিয়া
- SMTP-AUTH: RFC 4954: প্রমাণীকরণের জন্য SMTP পরিষেবা এক্সটেনশন