আপনার প্ল্যাটফর্ম বা গুগল থেকে আনলিঙ্ক করার প্রক্রিয়া শুরু করা যেতে পারে, এবং উভয় স্থানে একটি সামঞ্জস্যপূর্ণ লিঙ্ক অবস্থা প্রদর্শন করা সর্বোত্তম ব্যবহারকারী অভিজ্ঞতা প্রদান করে। গুগল অ্যাকাউন্ট লিঙ্কিংয়ের জন্য টোকেন বাতিলকরণ এন্ডপয়েন্ট বা ক্রস-অ্যাকাউন্ট সুরক্ষার সমর্থন ঐচ্ছিক।
নিম্নলিখিত যেকোনো কারণে অ্যাকাউন্টগুলো বিচ্ছিন্ন হয়ে যেতে পারে:
- ব্যবহারকারীর অনুরোধ থেকে
- একটি গুগল অ্যাপ্লিকেশন বা গুগল অ্যাকাউন্ট সেটিংস
- আপনার প্ল্যাটফর্ম
- মেয়াদোত্তীর্ণ রিফ্রেশ টোকেন নবায়ন করতে ব্যর্থতা
- আপনার বা গুগলের দ্বারা শুরু করা অন্যান্য ঘটনা। উদাহরণস্বরূপ, অপব্যবহার এবং হুমকি শনাক্তকরণ পরিষেবা দ্বারা অ্যাকাউন্ট স্থগিতকরণ।
ব্যবহারকারী গুগল থেকে সংযোগ বিচ্ছিন্ন করার অনুরোধ করেছেন।
ব্যবহারকারীর গুগল অ্যাকাউন্ট বা অ্যাপের মাধ্যমে অ্যাকাউন্ট আনলিঙ্ক করা হলে, পূর্বে ইস্যু করা যেকোনো অ্যাক্সেস ও রিফ্রেশ টোকেন মুছে যায়, ব্যবহারকারীর সম্মতি প্রত্যাহার করা হয় এবং আপনি যদি টোকেন বাতিলকরণ এন্ডপয়েন্ট প্রয়োগ করে থাকেন, তবে ঐচ্ছিকভাবে সেটিও কল করা হয়।
ব্যবহারকারী আপনার প্ল্যাটফর্ম থেকে সংযোগ বিচ্ছিন্ন করার অনুরোধ করেছেন।
ব্যবহারকারীদের আনলিঙ্ক করার জন্য একটি ব্যবস্থা রাখা উচিত, যেমন তাদের অ্যাকাউন্টের ইউআরএল। যদি আপনি ব্যবহারকারীদের আনলিঙ্ক করার কোনো উপায় না দেন, তাহলে গুগল অ্যাকাউন্টের একটি লিঙ্ক অন্তর্ভুক্ত করুন যাতে ব্যবহারকারীরা তাদের লিঙ্ক করা অ্যাকাউন্টটি পরিচালনা করতে পারেন।
আপনি রিস্ক অ্যান্ড ইনসিডেন্ট শেয়ারিং অ্যান্ড কোলাবোরেশন (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)
If you support Cross-Account Protection, your platform can notify Google when access or refresh tokens are revoked. This allows Google to inform users of link state changes, invalidate the token, cleanup security credentials, and authorization grants.
Cross-Account Protection is based on the RISC standard developed at the OpenID Foundation.
A Security Event Token is used to notify Google of token revocation.
When decoded, a token revocation event looks like the following example:
{
"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"
}
}
}
Security Event Tokens that you use to notify Google of token revocation events must conform to the requirements in the following table:
| Token revocation events | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
iss |
Issuer Claim: This is a URL which you host, and it's shared with Google during registration. | ||||||||||
aud |
Audience Claim: This identifies Google as the JWT recipient. It
must be set to google_account_linking. |
||||||||||
jti |
JWT ID Claim: This is a unique ID that you generate for every security event token. | ||||||||||
iat |
Issued At Claim: This is a NumericDate value
that represents the time when this security event token was created. |
||||||||||
toe |
Time of Event Claim: This is an optional
NumericDate value that represents the time at which the
token was revoked. |
||||||||||
exp |
Expiration Time Claim: Do not include this field, as the event resulting in this notification has already taken place. | ||||||||||
events |
|
||||||||||
For more information on field types and formats, see JSON Web Token (JWT).