আপনার প্ল্যাটফর্ম বা গুগল থেকে আনলিঙ্ক করার প্রক্রিয়া শুরু করা যেতে পারে, এবং উভয় স্থানে একটি সামঞ্জস্যপূর্ণ লিঙ্ক অবস্থা প্রদর্শন করা সর্বোত্তম ব্যবহারকারী অভিজ্ঞতা প্রদান করে। গুগল অ্যাকাউন্ট লিঙ্কিংয়ের জন্য টোকেন বাতিলকরণ এন্ডপয়েন্ট বা ক্রস-অ্যাকাউন্ট সুরক্ষার সমর্থন ঐচ্ছিক।
নিম্নলিখিত যেকোনো কারণে অ্যাকাউন্টগুলো বিচ্ছিন্ন হয়ে যেতে পারে:
- ব্যবহারকারীর অনুরোধ থেকে
- একটি গুগল অ্যাপ্লিকেশন বা গুগল অ্যাকাউন্ট সেটিংস
- আপনার প্ল্যাটফর্ম
- মেয়াদোত্তীর্ণ রিফ্রেশ টোকেন নবায়ন করতে ব্যর্থতা
- আপনার বা গুগলের দ্বারা শুরু করা অন্যান্য ঘটনা। উদাহরণস্বরূপ, অপব্যবহার এবং হুমকি শনাক্তকরণ পরিষেবা দ্বারা অ্যাকাউন্ট স্থগিতকরণ।
ব্যবহারকারী গুগল থেকে সংযোগ বিচ্ছিন্ন করার অনুরোধ করেছেন।
ব্যবহারকারীর গুগল অ্যাকাউন্ট বা অ্যাপের মাধ্যমে অ্যাকাউন্ট আনলিঙ্ক করা হলে, পূর্বে ইস্যু করা যেকোনো অ্যাক্সেস ও রিফ্রেশ টোকেন মুছে যায়, ব্যবহারকারীর সম্মতি প্রত্যাহার করা হয় এবং আপনি যদি টোকেন বাতিলকরণ এন্ডপয়েন্ট প্রয়োগ করে থাকেন, তবে ঐচ্ছিকভাবে সেটিও কল করা হয়।
ব্যবহারকারী আপনার প্ল্যাটফর্ম থেকে সংযোগ বিচ্ছিন্ন করার অনুরোধ করেছেন।
ব্যবহারকারীদের আনলিঙ্ক করার জন্য একটি ব্যবস্থা রাখা উচিত, যেমন তাদের অ্যাকাউন্টের ইউআরএল। যদি আপনি ব্যবহারকারীদের আনলিঙ্ক করার কোনো উপায় না দেন, তাহলে গুগল অ্যাকাউন্টের একটি লিঙ্ক অন্তর্ভুক্ত করুন যাতে ব্যবহারকারীরা তাদের লিঙ্ক করা অ্যাকাউন্টটি পরিচালনা করতে পারেন।
আপনি রিস্ক অ্যান্ড ইনসিডেন্ট শেয়ারিং অ্যান্ড কোলাবোরেশন (RISC) বাস্তবায়ন করতে পারেন এবং ব্যবহারকারীর অ্যাকাউন্ট লিঙ্কিং স্ট্যাটাসের পরিবর্তন সম্পর্কে গুগলকে অবহিত করতে পারেন। এর ফলে ব্যবহারকারীর অভিজ্ঞতা উন্নত হয়, যেখানে লিঙ্কিং অবস্থা আপডেট করার জন্য রিফ্রেশ বা অ্যাক্সেস টোকেন অনুরোধের উপর নির্ভর না করেই আপনার প্ল্যাটফর্ম এবং গুগল উভয়ই একটি বর্তমান ও সামঞ্জস্যপূর্ণ লিঙ্কিং স্ট্যাটাস প্রদর্শন করে।
টোকেনের মেয়াদ শেষ
ব্যবহারকারীদের নির্বিঘ্ন অভিজ্ঞতা দিতে এবং পরিষেবার ব্যাঘাত এড়াতে, গুগল রিফ্রেশ টোকেনগুলোর মেয়াদ শেষের দিকে সেগুলো নবায়ন করার চেষ্টা করে। কিছু ক্ষেত্রে, বৈধ রিফ্রেশ টোকেন পাওয়া না গেলে অ্যাকাউন্ট পুনরায় লিঙ্ক করার জন্য ব্যবহারকারীর সম্মতির প্রয়োজন হতে পারে।
আপনার প্ল্যাটফর্মকে একাধিক মেয়াদোত্তীর্ণ নয় এমন অ্যাক্সেস এবং রিফ্রেশ টোকেন সমর্থন করার জন্য ডিজাইন করলে, ক্লাস্টারড এনভায়রনমেন্টের মধ্যে ক্লায়েন্ট-সার্ভার বিনিময়ে উপস্থিত রেস কন্ডিশন কমানো যায়, ব্যবহারকারীর অসুবিধা এড়ানো যায় এবং জটিল টাইমিং ও ত্রুটি হ্যান্ডলিং পরিস্থিতি হ্রাস করা যায়। যদিও এটি শেষ পর্যন্ত সামঞ্জস্যপূর্ণ (eventually consistent), ক্লায়েন্ট-সার্ভার টোকেন নবায়ন বিনিময়ের সময় এবং ক্লাস্টার সিঙ্ক্রোনাইজেশনের আগে পূর্ববর্তী এবং নতুন ইস্যু করা উভয় মেয়াদোত্তীর্ণ নয় এমন টোকেনই অল্প সময়ের জন্য ব্যবহৃত হতে পারে। উদাহরণস্বরূপ, আপনার পরিষেবাতে গুগলের একটি অনুরোধ, যা পূর্ববর্তী মেয়াদোত্তীর্ণ নয় এমন অ্যাক্সেস টোকেন ব্যবহার করে, সেটি ঘটে আপনার একটি নতুন অ্যাক্সেস টোকেন ইস্যু করার ঠিক পরেই, কিন্তু গুগলে অনুরোধটি গ্রহণ এবং ক্লাস্টার সিঙ্ক্রোনাইজেশন সম্পন্ন হওয়ার আগে। রিফ্রেশ টোকেন রোটেশনের বিকল্প নিরাপত্তা ব্যবস্থা গ্রহণের সুপারিশ করা হয়।
অন্যান্য অনুষ্ঠান
নিষ্ক্রিয়তা, সাসপেনশন, ক্ষতিকর কার্যকলাপ ইত্যাদির মতো আরও বিভিন্ন কারণে অ্যাকাউন্ট আনলিঙ্ক হয়ে যেতে পারে। এই ধরনের পরিস্থিতিতে, অ্যাকাউন্ট ও লিঙ্কের অবস্থার পরিবর্তন সম্পর্কে একে অপরকে অবহিত করার মাধ্যমে আপনার প্ল্যাটফর্ম এবং গুগল ব্যবহারকারীর অ্যাকাউন্টগুলো সবচেয়ে ভালোভাবে পরিচালনা করতে এবং পুনরায় লিঙ্ক করতে পারে।
গুগলের কল করার জন্য একটি টোকেন বাতিলকরণ এন্ডপয়েন্ট প্রয়োগ করুন এবং আপনার প্ল্যাটফর্ম ও গুগল যেন ব্যবহারকারী অ্যাকাউন্টের লিঙ্ক অবস্থা সামঞ্জস্যপূর্ণ রাখে, তা নিশ্চিত করতে RISC ব্যবহার করে আপনার টোকেন বাতিলকরণ ইভেন্টগুলো সম্পর্কে গুগলকে অবহিত করুন।
টোকেন প্রত্যাহারের শেষবিন্দু
আপনি যদি একটি OAuth 2.0 টোকেন বাতিলকরণ এন্ডপয়েন্ট সমর্থন করেন, তাহলে আপনার প্ল্যাটফর্ম গুগল থেকে নোটিফিকেশন পেতে পারে। এর মাধ্যমে আপনি ব্যবহারকারীদের লিঙ্কের অবস্থার পরিবর্তন সম্পর্কে জানাতে, একটি টোকেন বাতিল করতে এবং নিরাপত্তা সংক্রান্ত ক্রেডেনশিয়াল ও অনুমোদন মঞ্জুরি পরিষ্কার করতে পারবেন।
অনুরোধটির ধরন নিম্নরূপ:
POST /revoke HTTP/1.1 Host: oauth2.example.com Content-Type: application/x-www-form-urlencoded client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&token=TOKEN&token_type_hint=refresh_token
আপনার টোকেন বাতিলকরণ এন্ডপয়েন্টকে অবশ্যই নিম্নলিখিত প্যারামিটারগুলো পরিচালনা করতে সক্ষম হতে হবে:
| প্রত্যাহার শেষবিন্দু পরামিতি | |
|---|---|
client_id | একটি স্ট্রিং যা অনুরোধের উৎস হিসেবে গুগলকে শনাক্ত করে। এই স্ট্রিংটি আপনার সিস্টেমে গুগলের অনন্য শনাক্তকারী হিসেবে অবশ্যই নিবন্ধিত থাকতে হবে। |
client_secret | একটি গোপন স্ট্রিং যা আপনি আপনার পরিষেবার জন্য গুগলে নিবন্ধন করেছেন। |
token | টোকেনটি বাতিল করা হবে। |
token_type_hint | (ঐচ্ছিক) যে টোকেনটি বাতিল করা হচ্ছে তার ধরন, হয় access_token অথবা refresh_token । নির্দিষ্ট করে না দিলে, ডিফল্ট হিসেবে access_token ব্যবহৃত হবে। |
টোকেনটি মুছে গেলে বা অবৈধ হলে একটি প্রতিক্রিয়া ফেরত দিন। একটি উদাহরণের জন্য নিম্নলিখিতটি দেখুন:
HTTP/1.1 200 Success Content-Type: application/json;charset=UTF-8
যদি কোনো কারণে টোকেনটি মুছে ফেলা না যায়, তাহলে একটি 503 রেসপন্স কোড রিটার্ন করুন, যেমনটি নিচের উদাহরণে দেখানো হয়েছে:
HTTP/1.1 503 Service Unavailable Content-Type: application/json;charset=UTF-8 Retry-After: HTTP-date / delay-seconds
Google পরে অথবা Retry-After দ্বারা নির্দেশিত অনুযায়ী অনুরোধটি পুনরায় চেষ্টা করে।
ক্রস-অ্যাকাউন্ট সুরক্ষা (RISC)
আপনি ক্রস-অ্যাকাউন্ট সুরক্ষা সমর্থন করলে, অ্যাক্সেস বা রিফ্রেশ টোকেন প্রত্যাহার করা হলে আপনার প্ল্যাটফর্ম Google কে অবহিত করতে পারে। এটি Google-কে ব্যবহারকারীদের লিঙ্কের অবস্থার পরিবর্তন, টোকেন বাতিল, নিরাপত্তা শংসাপত্র পরিষ্কার এবং অনুমোদনের অনুদান সম্পর্কে অবহিত করতে দেয়।
ক্রস-অ্যাকাউন্ট সুরক্ষা OpenID ফাউন্ডেশনে বিকশিত RISC স্ট্যান্ডার্ডের উপর ভিত্তি করে।
একটি সিকিউরিটি ইভেন্ট টোকেন ব্যবহার করা হয় টোকেন প্রত্যাহার সম্পর্কে Google কে জানানোর জন্য।
ডিকোড করা হলে, একটি টোকেন প্রত্যাহার ইভেন্ট নিম্নলিখিত উদাহরণের মত দেখায়:
{
"iss":"http://risc.example.com",
"iat":1521068887,
"aud":"google_account_linking",
"jti":"101942095",
"toe": "1508184602",
"events": {
"https://schemas.openid.net/secevent/oauth/event-type/token-revoked":{
"subject_type": "oauth_token",
"token_type": "refresh_token",
"token_identifier_alg": "hash_SHA512_double",
"token": "double SHA-512 hash value of token"
}
}
}
সিকিউরিটি ইভেন্ট টোকেনগুলি যেগুলি আপনি Google কে টোকেন প্রত্যাহার ইভেন্টগুলিকে অবহিত করার জন্য ব্যবহার করেন সেগুলি অবশ্যই নিম্নলিখিত টেবিলের প্রয়োজনীয়তাগুলি মেনে চলবে:
| টোকেন প্রত্যাহার ইভেন্ট | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
iss | ইস্যুকারীর দাবি: এটি একটি URL যা আপনি হোস্ট করেন এবং এটি নিবন্ধনের সময় Google-এর সাথে শেয়ার করা হয়। | ||||||||||
aud | শ্রোতাদের দাবি: এটি Google কে JWT প্রাপক হিসাবে চিহ্নিত করে৷ এটি অবশ্যই google_account_linking এ সেট করতে হবে। | ||||||||||
jti | JWT আইডি দাবি: এটি একটি অনন্য আইডি যা আপনি প্রতিটি নিরাপত্তা ইভেন্ট টোকেনের জন্য তৈরি করেন। | ||||||||||
iat | দাবীতে ইস্যু করা: এটি একটি NumericDate তারিখ যা এই নিরাপত্তা ইভেন্ট টোকেন তৈরি করার সময়কে প্রতিনিধিত্ব করে। | ||||||||||
toe | ইভেন্ট দাবির সময়: এটি একটি ঐচ্ছিক NumericDate মান যা টোকেন প্রত্যাহার করার সময়কে প্রতিনিধিত্ব করে। | ||||||||||
exp | মেয়াদ শেষ হওয়ার সময় দাবি: এই ক্ষেত্রটি অন্তর্ভুক্ত করবেন না , কারণ এই বিজ্ঞপ্তির ফলে ইভেন্টটি ইতিমধ্যেই ঘটেছে৷ | ||||||||||
events |
| ||||||||||
ক্ষেত্রের ধরন এবং বিন্যাস সম্পর্কে আরও তথ্যের জন্য, JSON ওয়েব টোকেন (JWT) দেখুন।