পরিচয় লিঙ্কিং - OAuth 2.0

নির্বিঘ্ন ইউজার সেশন (যেমন, লয়ালটি বেনিফিট ও পার্সোনালাইজড অফার অ্যাক্সেস করা) এবং অথেনটিকেটেড চেকআউট সক্ষম করতে, আপনাকে অবশ্যই OAuth 2.0 ব্যবহার করে আইডেন্টিটি লিঙ্কিং সক্ষমতা প্রয়োগ করতে হবে। যদি আপনি আইডেন্টিটি লিঙ্কিং প্রয়োগ না করেন, তবে আপনাকে গেস্ট এক্সপেরিয়েন্স সমর্থন করতে হবে।

গোপনীয়তা বিধিমালা এবং সম্মতি পদ্ধতি সংক্রান্ত যেকোনো প্রশ্নের জন্য আপনার আইনি দলের সাথে পরামর্শ করুন।

মূল প্রয়োজনীয়তা

আইডেন্টিটি লিঙ্কিং ব্যবহারকারীর অ্যাকাউন্ট লিঙ্ক করতে OAuth 2.0 ব্যবহার করে। আপনার OAuth 2.0 ইমপ্লিমেন্টেশনকে অবশ্যই OAuth লিঙ্কিং- এ নথিভুক্ত প্রয়োজনীয়তাগুলি পূরণ করতে হবে।

এছাড়াও, ইউনিভার্সাল কমার্স প্রোটোকল (UCP)-এর নিরাপত্তা সংক্রান্ত সর্বোত্তম অনুশীলনের সাথে সামঞ্জস্য রাখতে, আমরা সকল অথরাইজেশন কোড বিনিময়ের জন্য S256 ব্যবহার করে প্রুফ কী ফর কোড এক্সচেঞ্জ (PKCE) প্রয়োগ করার এবং আপনার টোকেন এন্ডপয়েন্টে অ্যাসিমেট্রিক ক্লায়েন্ট অথেন্টিকেশন (যেমন private_key_jwt বা tls_client_auth ) ব্যবহার করার জন্য দৃঢ়ভাবে সুপারিশ করছি।

আরও জানতে এখানে পড়ুন: ইউসিপি সাধারণ নির্দেশিকা

স্কোপ

আপনাকে অবশ্যই নিম্নলিখিত স্কোপগুলি প্রয়োগ করতে হবে, যা চেকআউট লাইফসাইকেলের সমস্ত অপারেশন (তৈরি, আপডেট, সম্পন্ন) এবং অর্ডারের ডেটা পড়ার অনুমতি প্রদান করে।

  • dev.ucp.shopping.order:read
  • dev.ucp.shopping.checkout:manage

টোকেন ব্যবহার

যখন কোনো ব্যবহারকারী তাদের অ্যাকাউন্ট লিঙ্ক করেন, তখন গুগল সমস্ত চেকআউট লাইফসাইকেল অপারেশন (তৈরি, আপডেট, সম্পূর্ণ) এবং অর্ডার ডেটা অনুরোধের জন্য Authorization HTTP হেডারে ব্যবহারকারীর অ্যাক্সেস টোকেন অন্তর্ভুক্ত করে:

Authorization: Bearer <access_token>

মেশিন-টু-মেশিন অথেনটিকেশনের জন্য ব্যবহৃত হেডারটিই এটি।

ত্রুটি পরিচালনা

পরিচয় সংক্রান্ত সমস্যার কারণে যখন কোনো ব্যবহারকারী-প্রমাণিত অপারেশন ব্যর্থ হয়, তখন আপনাকে অবশ্যই RFC 6750 অনুযায়ী উপযুক্ত HTTP স্ট্যাটাস কোড এবং UCP ত্রুটি বার্তার সাথে একটি WWW-Authenticate: Bearer চ্যালেঞ্জ হেডার ফেরত দিতে হবে।

পরিচয়_প্রয়োজনীয়

যখন কোনো অপারেশনের জন্য ব্যবহারকারীর পরিচয় প্রয়োজন হয়, কিন্তু অনুরোধে কোনো টোকেন থাকে না, অথবা প্রদত্ত টোকেনটি অবৈধ বা মেয়াদোত্তীর্ণ হয়, তখন এই ত্রুটিটি ফেরত দিন।

  • HTTP স্ট্যাটাস: 401 Unauthorized
  • UCP ত্রুটি কোড: identity_required
  • WWW-প্রমাণীকরণ: realm="<your-issuer-uri>" অন্তর্ভুক্ত করুন। যদি একটি টোকেন উপস্থিত থাকে কিন্তু সেটি অবৈধ/মেয়াদোত্তীর্ণ হয়, তাহলে error="invalid_token" ও অন্তর্ভুক্ত করুন।

অপর্যাপ্ত_পরিসর

যখন অনুরোধে একটি বৈধ ব্যবহারকারী পরিচয় টোকেন থাকে, কিন্তু অপারেশনটির জন্য প্রয়োজনীয় স্কোপ(গুলি) টোকেনটিতে থাকে না, তখন এই ত্রুটিটি ফেরত দিন।

  • HTTP স্ট্যাটাস: 403 Forbidden
  • UCP ত্রুটি কোড: insufficient_scope
  • WWW-Authenticate: realm="<your-issuer-uri>" , error="insufficient_scope" , এবং scope="<space-separated list of required scopes>" অন্তর্ভুক্ত করুন।

বিজ্ঞাপন পরিচয় সংযোগ

আপনাকে আপনার UCP প্রোফাইলে আইডেন্টিটি লিঙ্কিং সক্ষমতাটি অবশ্যই ঘোষণা করতে হবে। এই সক্ষমতাটি কীভাবে তালিকাভুক্ত করতে হয় তার একটি উদাহরণের জন্য, UCP প্রোফাইল দেখুন।

গুগল স্ট্রিমলাইনড লিঙ্কিং

গুগল স্ট্রিমলাইনড লিঙ্কিং হলো স্ট্যান্ডার্ড OAuth 2.0-এর একটি ঐচ্ছিক সংযোজন। এটি OAuth 2.0 টোকেন এন্ডপয়েন্টে ( check , create , get ইন্টেন্ট) ইন্টেন্ট চেক এবং টোকেন এক্সচেঞ্জকে একত্রিত করতে JWT অ্যাসারশন ব্যবহার করে।

নির্বিঘ্ন ব্যবহারকারী অভিজ্ঞতার জন্য গুগল স্ট্রিমলাইনড লিঙ্কিং ব্যবহার করার পরামর্শ দেওয়া হয়। এটি ব্যবহারকারীদের গুগল ইন্টারফেস থেকে বের না হয়েই তাদের গুগল প্রোফাইল ব্যবহার করে অ্যাকাউন্ট লিঙ্ক করতে বা নতুন অ্যাকাউন্ট তৈরি করতে দেয়। যেহেতু এই প্রক্রিয়াটি সম্পূর্ণরূপে গুগলের ইউজার ইন্টারফেসের মধ্যেই সম্পন্ন হয়, তাই কোনো লিঙ্কিং ফ্রন্টএন্ডের প্রয়োজন হয় না। এটি ডেভেলপমেন্টের অতিরিক্ত কাজ কমায়, ব্রাউজার রিডাইরেক্ট দূর করে এবং কনভার্সন রেট বাড়াতে পারে।

অনুমোদন সার্ভার মেটাডেটা (JSON উদাহরণ)

আপনাকে আপনার অনুমোদন সার্ভারের মেটাডেটা এখানে প্রকাশ করতে হবে:

GET https://YOUR_DOMAIN/.well-known/oauth-authorization-server

এটি দেখতে কেমন হতে পারে তার একটি উদাহরণ নিচে দেওয়া হলো:

{
  "issuer": "https://merchant.example.com",
  "authorization_endpoint": "https://merchant.example.com/oauth2/authorize",
  "token_endpoint": "https://merchant.example.com/oauth2/token",
  "revocation_endpoint": "https://merchant.example.com/oauth2/revoke",
  "scopes_supported": [
    "dev.ucp.shopping.order:read",
    "dev.ucp.shopping.checkout:manage"
  ],
  "response_types_supported": [
    "code"
  ],
  "grant_types_supported": [
    "authorization_code",
    "refresh_token"
  ],
  "token_endpoint_auth_methods_supported": [
    "client_secret_basic"
  ],
  "service_documentation": "https://merchant.example.com/docs/oauth2"
}