গুগল কালো সম্প্রদায়ের জন্য জাতিগত সমতা উন্নয়নে প্রতিশ্রুতিবদ্ধ। দেখ কিভাবে.

ওপেনআইডি কানেক্ট

গুগলের ওপেনআইডি কানেক্টের শেষ পয়েন্টটি ওপেনআইডি সার্টিফাইড।

গুগলের OAuth 2.0 API গুলি প্রমাণীকরণ এবং অনুমোদন উভয়ের জন্যই ব্যবহার করা যেতে পারে। এই ডকুমেন্টটি প্রমাণীকরণের জন্য আমাদের OAuth 2.0 বাস্তবায়ন বর্ণনা করে, যা ওপেনআইডি কানেক্ট স্পেসিফিকেশন মেনে চলে এবং এটি ওপেনআইডি সার্টিফাইডগুগল এপিআইগুলিতে অ্যাক্সেস পেতে OAuth 2.0 ব্যবহার করে পাওয়া ডকুমেন্টেশনও এই পরিষেবাটিতে প্রযোজ্য। আপনি যদি এই প্রোটোকলটি ইন্টারেক্টিভভাবে অন্বেষণ করতে চান তবে আমরা Google OAuth 2.0 খেলার মাঠের প্রস্তাব দিই। স্ট্যাক ওভারফ্লোতে সহায়তা পেতে, আপনার প্রশ্নগুলিকে 'গুগল-ওউথ' দিয়ে ট্যাগ করুন।

OAuth 2.0 সেট আপ করা হচ্ছে

আপনার অ্যাপ্লিকেশনটি ব্যবহারকারীর লগইনের জন্য গুগলের OAuth 2.0 প্রমাণীকরণ সিস্টেমটি ব্যবহার করার আগে আপনাকে OAuth 2.0 শংসাপত্রগুলি পেতে Google API Console এ একটি প্রজেক্ট সেট আপ করতে হবে, একটি ইউটিআর পুনর্নির্দেশ করতে হবে এবং (allyচ্ছিকভাবে) আপনার ব্যবহারকারীরা ব্যবহারকারীদের যে ব্র্যান্ডিং তথ্য দেখছে তা কাস্টমাইজ করতে হবে- সম্মতি পর্দা। আপনি পরিষেবা অ্যাকাউন্ট তৈরি করতে, বিলিং সক্ষম করতে, ফিল্টারিং সেট আপ করতে এবং অন্যান্য কাজ করতে API Console ব্যবহার করতে পারেন। আরও তথ্যের জন্য, Google API Console সহায়তা দেখুন

OAuth 2.0 শংসাপত্রগুলি পান

ব্যবহারকারীদের প্রমাণীকরণ করতে এবং গুগলের API গুলি অ্যাক্সেস পেতে আপনার ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট সহ OAuth 2.0 শংসাপত্রগুলি প্রয়োজন।

প্রদত্ত OAuth 2.0 শংসাপত্রের জন্য ক্লায়েন্ট আইডি এবং ক্লায়েন্টের গোপনীয়তা দেখতে, নিম্নলিখিত পাঠ্যটিতে ক্লিক করুন : শংসাপত্র নির্বাচন করুন । উইন্ডোটি খোলে, আপনার প্রকল্প এবং আপনি যে শংসাপত্র চান তা চয়ন করুন, তারপরে দেখুন ক্লিক করুন।

অথবা, API Console এ শংসাপত্র পৃষ্ঠা থেকে আপনার ক্লায়েন্ট আইডি এবং ক্লায়েন্টের গোপনীয়তা দেখুন:

  1. Go to the Credentials page.
  2. আপনার শংসাপত্রের নাম বা পেন্সিল ( ) আইকনটি ক্লিক করুন। আপনার ক্লায়েন্ট আইডি এবং গোপন পৃষ্ঠার শীর্ষে আছে।

একটি পুনর্নির্দেশ ইউআরআই সেট করুন

আপনি API Console এ পুনর্নির্দেশিত ইউআরআই নির্ধারণ করে যে Google কোথায় আপনার অনুমোদনের অনুরোধগুলিতে প্রতিক্রিয়া প্রেরণ করে।

প্রদত্ত OAuth 2.0 শংসাপত্রের জন্য পুনঃনির্দেশিত ইউআরআইগুলি তৈরি করতে, দেখতে বা সম্পাদনা করতে নিম্নলিখিতটি করুন:

  1. Go to the Credentials page.
  2. পৃষ্ঠার OAuth 2.0 ক্লায়েন্ট আইডি বিভাগে, একটি শংসাপত্র ক্লিক করুন।
  3. পুনঃনির্দেশিত ইউআরআইগুলি দেখুন বা সম্পাদনা করুন।

শংসাপত্র পৃষ্ঠায় যদি কোনও OAuth 2.0 ক্লায়েন্ট আইডি বিভাগ না থাকে, তবে আপনার প্রকল্পের কোনও OAuth শংসাপত্র নেই। একটি তৈরি করতে, শংসাপত্র তৈরি করুন ক্লিক করুন

ব্যবহারকারীর সম্মতি স্ক্রিনটি কাস্টমাইজ করুন

আপনার ব্যবহারকারীদের জন্য, OAuth 2.0 প্রমাণীকরণের অভিজ্ঞতায় একটি সম্মতি পর্দা অন্তর্ভুক্ত রয়েছে যা ব্যবহারকারী যে তথ্য প্রকাশ করছে এবং যে শর্তগুলি প্রয়োগ করছে তা বর্ণনা করে। উদাহরণস্বরূপ, যখন ব্যবহারকারী লগ ইন করেন তখন তাদের অ্যাপ্লিকেশনটিকে তাদের ইমেল ঠিকানা এবং বেসিক অ্যাকাউন্টের তথ্যে অ্যাক্সেস দিতে বলা হতে পারে। আপনি scope প্যারামিটার ব্যবহার করে এই তথ্যটিতে অ্যাক্সেসের অনুরোধ করছেন, যা আপনার অ্যাপ্লিকেশনটির অনুমোদনের অনুরোধের অন্তর্ভুক্ত। অন্যান্য গুগল এপিআইতে অ্যাক্সেসের অনুরোধ করতে আপনি স্কোপগুলিও ব্যবহার করতে পারেন।

ব্যবহারকারীর সম্মতি পর্দা ব্র্যান্ডিং সম্পর্কিত তথ্য যেমন আপনার পণ্যের নাম, লোগো এবং একটি হোমপেজ URL উপস্থাপন করে। আপনি API Console এ ব্র্যান্ডিংয়ের তথ্য নিয়ন্ত্রণ করেন।

আপনার প্রকল্পের সম্মতি পর্দা সক্ষম করতে:

  1. খুলুন Consent Screen page মধ্যে Google API Console ।
  2. If prompted, select a project, or create a new one.
  3. ফর্মটি পূরণ করুন এবং সংরক্ষণ করুন ক্লিক করুন

নিম্নলিখিত সম্মতি ডায়ালগটি দেখায় যে ব্যবহারকারী যখন অনুরোধে OAuth 2.0 এবং গুগল ড্রাইভ স্কোপগুলির সংমিশ্রণ উপস্থিত থাকে তখন তারা কী দেখতে পাবে। (এই জেনেরিক ডায়ালগটি গুগল ওআউথ ২.০ প্লেগ্রাউন্ড ব্যবহার করে তৈরি করা হয়েছিল, সুতরাং এতে ব্র্যান্ডিংয়ের তথ্য অন্তর্ভুক্ত নয় যা API Console এ সেট করা হবে))

সম্মতি পাতা স্ক্রিন শট

পরিষেবা অ্যাক্সেস করা হচ্ছে

গুগল এবং তৃতীয় পক্ষগুলি গ্রন্থাগারগুলি সরবরাহ করে যা আপনি ব্যবহারকারীর প্রমাণীকরণ এবং গুগল এপিআইতে অ্যাক্সেস অর্জনের অনেকগুলি বাস্তবায়নের বিশদ যত্ন নিতে ব্যবহার করতে পারেন। উদাহরণগুলির মধ্যে রয়েছে গুগল সাইন-ইন এবং গুগল ক্লায়েন্ট লাইব্রেরি , যা বিভিন্ন প্ল্যাটফর্মের জন্য উপলব্ধ।

আপনি যদি কোনও লাইব্রেরি ব্যবহার না করা চয়ন করেন তবে এই নথির বাকী অংশের নির্দেশাবলী অনুসরণ করুন, যা HTTP অনুরোধ প্রবাহকে বর্ণনা করে যা অন্তর্গতভাবে উপলব্ধ লাইব্রেরিগুলিতে থাকে।

ব্যবহারকারীকে প্রমাণীকরণ করা হচ্ছে

ব্যবহারকারীকে প্রমাণীকরণের মধ্যে একটি আইডি টোকেন গ্রহণ এবং এটি যাচাই করা জড়িত। আইডি টোকেনগুলি ওপেনআইডি কানেক্টের একটি মানক বৈশিষ্ট্য যা ইন্টারনেটে পরিচয় ভাগ করে নেওয়ার ক্ষেত্রে ব্যবহারের জন্য ডিজাইন করা হয়েছে।

কোনও ব্যবহারকারীকে প্রমাণীকরণ এবং আইডি টোকেন পাওয়ার জন্য সর্বাধিক ব্যবহৃত পদ্ধতিকে "সার্ভার" প্রবাহ এবং "অন্তর্নিহিত" প্রবাহ বলা হয়। সার্ভার ফ্লো ব্রাউজার বা মোবাইল ডিভাইস ব্যবহার করে এমন ব্যক্তির পরিচয় যাচাই করতে কোনও অ্যাপ্লিকেশনটির ব্যাক-এন্ড সার্ভারকে অনুমতি দেয়। অন্তর্নিহিত প্রবাহটি ব্যবহৃত হয় যখন কোনও ক্লায়েন্ট-সাইড অ্যাপ্লিকেশন (সাধারণত ব্রাউজারে চলমান একটি জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন) এর ব্যাক-এন্ড সার্ভারের পরিবর্তে সরাসরি API এ অ্যাক্সেস করতে হয়।

এই নথিটি ব্যবহারকারীকে প্রমাণীকরণের জন্য সার্ভার প্রবাহকে কীভাবে সম্পাদন করবে তা বর্ণনা করে। ক্লায়েন্টের পক্ষ থেকে টোকেন পরিচালনা এবং ব্যবহারে সুরক্ষা ঝুঁকির কারণে অন্তর্নিহিত প্রবাহটি উল্লেখযোগ্যভাবে জটিল। যদি আপনার অন্তর্নিহিত প্রবাহটি প্রয়োগ করতে হয় তবে আমরা গুগল সাইন-ইন ব্যবহার করার জন্য সুপারিশ করি।

সার্ভার প্রবাহ

আপনি এই অ্যাপ্লিকেশনগুলিকে এই প্রোটোকলগুলি ব্যবহার করতে সক্ষম করতে এবং আপনার ব্যবহারকারীদের প্রমাণীকরণের জন্য API Console এ সেট আপ করেছেন তা নিশ্চিত করুন। যখন কোনও ব্যবহারকারী গুগলে লগ ইন করার চেষ্টা করে, আপনার প্রয়োজন:

  1. একটি জালিয়াতি বিরোধী রাষ্ট্র টোকেন তৈরি করুন
  2. গুগলে একটি প্রমাণীকরণের অনুরোধ প্রেরণ করুন
  3. জালিয়াতি বিরোধী রাষ্ট্রের টোকেনটি নিশ্চিত করুন
  4. অ্যাক্সেস টোকেন এবং আইডি টোকেনের জন্য এক্সচেঞ্জ code
  5. আইডি টোকেন থেকে ব্যবহারকারীর তথ্য পান
  6. ব্যবহারকারীকে প্রমাণীকরণ করুন

1. একটি জালিয়াতি বিরোধী রাষ্ট্র টোকেন তৈরি করুন

জালিয়াতি আক্রমণগুলির অনুরোধ রোধ করে আপনাকে অবশ্যই আপনার ব্যবহারকারীদের সুরক্ষা রক্ষা করতে হবে। প্রথম পদক্ষেপটি একটি অনন্য সেশন টোকেন তৈরি করছে যা আপনার অ্যাপ্লিকেশন এবং ব্যবহারকারীর ক্লায়েন্টের মধ্যে অবস্থান ধরে। আপনি পরে এই অনন্য সেশনের টোকেনটি গুগল ওআউথ লগইন পরিষেবা দ্বারা প্রত্যাখ্যান করেছেন যে ব্যবহারকারী অনুরোধ করছে এবং কোনও দূষিত আক্রমণকারী নয়, তা যাচাই করে returned এই টোকেনগুলি প্রায়শই ক্রস-সাইট রিকোয়েস্ট ফোরজি ( সিএসআরএফ ) টোকেন হিসাবে পরিচিত।

স্টেট টোকেনের জন্য একটি ভাল পছন্দ হ'ল 30 বা তার বেশি অক্ষরের একটি স্ট্রিং একটি উচ্চ মানের মানের এলোমেলো সংখ্যা জেনারেটর ব্যবহার করে নির্মিত। আর একটি হ্যাশ যা আপনার ব্যাক-এন্ডে গোপন রাখা একটি কী দিয়ে আপনার কিছু সেশন রাষ্ট্র পরিবর্তনশীলকে স্বাক্ষর করে উত্পন্ন একটি হ্যাশ।

নিম্নলিখিত কোডটি অনন্য সেশন টোকেন তৈরি করে demonst

পিএইচপি

এই নমুনাটি ব্যবহার করার জন্য আপনাকে পিএইচপি-র জন্য গুগল এপিআইএস ক্লায়েন্ট লাইব্রেরি ডাউনলোড করতে হবে।

// Create a state token to prevent request forgery.
// Store it in the session for later validation.
$state = bin2hex(random_bytes(128/8));
$app['session']->set('state', $state);
// Set the client ID, token state, and application name in the HTML while
// serving it.
return $app['twig']->render('index.html', array(
    'CLIENT_ID' => CLIENT_ID,
    'STATE' => $state,
    'APPLICATION_NAME' => APPLICATION_NAME
));

জাভা

এই নমুনাটি ব্যবহার করার জন্য আপনাকে জাভা সম্পর্কিত Google APIs ক্লায়েন্ট লাইব্রেরিটি ডাউনলোড করতে হবে download

// Create a state token to prevent request forgery.
// Store it in the session for later validation.
String state = new BigInteger(130, new SecureRandom()).toString(32);
request.session().attribute("state", state);
// Read index.html into memory, and set the client ID,
// token state, and application name in the HTML before serving it.
return new Scanner(new File("index.html"), "UTF-8")
    .useDelimiter("\\A").next()
    .replaceAll("[{]{2}\\s*CLIENT_ID\\s*[}]{2}", CLIENT_ID)
    .replaceAll("[{]{2}\\s*STATE\\s*[}]{2}", state)
    .replaceAll("[{]{2}\\s*APPLICATION_NAME\\s*[}]{2}",
    APPLICATION_NAME);

পাইথন

এই নমুনাটি ব্যবহার করার জন্য আপনাকে পাইথনের জন্য Google APIs ক্লায়েন্ট লাইব্রেরিটি ডাউনলোড করতে হবে।

# Create a state token to prevent request forgery.
# Store it in the session for later validation.
state = hashlib.sha256(os.urandom(1024)).hexdigest()
session['state'] = state
# Set the client ID, token state, and application name in the HTML while
# serving it.
response = make_response(
    render_template('index.html',
                    CLIENT_ID=CLIENT_ID,
                    STATE=state,
                    APPLICATION_NAME=APPLICATION_NAME))

২. গুগলে একটি প্রমাণীকরণের অনুরোধ প্রেরণ করুন

পরবর্তী পদক্ষেপটি যথাযথ ইউআরআই প্যারামিটার সহ একটি HTTPS GET অনুরোধ গঠন করছে। এই প্রক্রিয়াটির সমস্ত পদক্ষেপে HTTP এর চেয়ে HTTPS ব্যবহার নোট করুন; এইচটিটিপি সংযোগগুলি অস্বীকার করা হয়েছে। আপনি থেকে বেস কোনো URI উদ্ধার উচিত ডিসকভারি ডকুমেন্ট ব্যবহার authorization_endpoint মেটাডেটা মান। নিম্নলিখিত আলোচনার ভিত্তিটি ইউআরআই https://accounts.google.com/o/oauth2/v2/auth হিসাবে https://accounts.google.com/o/oauth2/v2/auth

একটি মৌলিক অনুরোধের জন্য, নিম্নলিখিত পরামিতিগুলি নির্দিষ্ট করুন:

  • client_id , যা আপনি API Console Credentials page থেকে পান।
  • response_type , যা একটি মৌলিক অনুমোদনের কোড প্রবাহ অনুরোধের code হওয়া উচিত। ( response_type টাইপ আরও পড়ুন।)
  • scope , যা একটি প্রাথমিক অনুরোধে openid email হওয়া উচিত। ( scope আরও পড়ুন।)
  • redirect_uri আপনার সার্ভারে এইচটিটিপি শেষ পয়েন্ট হওয়া উচিত যা গুগলের কাছ থেকে প্রতিক্রিয়া পাবে। মানটি অবশ্যই OAuth 2.0 ক্লায়েন্টের জন্য অনুমোদিত পুনর্নির্দেশের ইউআরআইয়ের একটির সাথে অবশ্যই মিলবে, যা আপনি API Console Credentials page এ কনফিগার করেছেন। যদি এই মানটি অনুমোদিত ইউআরআইয়ের সাথে মেলে না, তবে অনুরোধটি redirect_uri_mismatch ত্রুটির সাথে ব্যর্থ হবে।
  • state অ্যান্টি-জালিয়াতি অনন্য সেশন টোকেনের মান এবং সেই সাথে প্রসঙ্গটি পুনরুদ্ধার করতে অন্য যে কোনও তথ্য ব্যবহারকারীর আপনার অ্যাপ্লিকেশনটিতে ফিরে আসে, উদাহরণস্বরূপ, শুরু হওয়া URL টি অন্তর্ভুক্ত করা উচিত। ( state আরও পড়ুন।)
  • nonce হ'ল আপনার অ্যাপ্লিকেশন দ্বারা উত্পাদিত একটি এলোমেলো মান যা উপস্থিত থাকলে রিপ্লে সুরক্ষা সক্ষম করে।
  • login_hint ব্যবহারকারীর ইমেল ঠিকানা বা sub স্ট্রিং হতে পারে যা ব্যবহারকারীর গুগল আইডির সমতুল্য। আপনি যদি কোনও login_hint এবং ব্যবহারকারী বর্তমানে লগ ইন থাকে তবে সম্মতি স্ক্রিনে আপনার অ্যাপ্লিকেশনটিতে ব্যবহারকারীর ইমেল ঠিকানা প্রকাশের জন্য অনুমোদনের জন্য একটি অনুরোধ অন্তর্ভুক্ত রয়েছে। ( login_hint আরও পড়ুন))
  • নির্দিষ্ট জি স্যুট ডোমেনের ব্যবহারকারীদের জন্য ওপেনআইডি সংযোগ প্রবাহটি অনুকূল করতে hd প্যারামিটারটি ব্যবহার করুন। ( hd আরও পড়ুন।)

এখানে পঠনযোগ্যতার জন্য লাইন ব্রেক এবং স্পেস সহ সম্পূর্ণ ওপেনআইডি কানেক্ট প্রমাণীকরণ ইউআরআইয়ের একটি উদাহরণ রয়েছে:

https://accounts.google.com/o/oauth2/v2/auth?
 response_type=code&
 client_id=424911365001.apps.googleusercontent.com&
 scope=openid%20email&
 redirect_uri=https%3A//oauth2.example.com/code&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2-login-demo.example.com%2FmyHome&
 login_hint=jsmith@example.com&
 nonce=0394852-3190485-2490358&
 hd=example.com

যদি আপনার অ্যাপ্লিকেশন তাদের সম্পর্কে কোনও নতুন তথ্যের জন্য অনুরোধ করে, বা যদি আপনার অ্যাপ্লিকেশন অ্যাকাউন্টটি অ্যাক্সেসের জন্য অনুরোধ করে যা তারা পূর্বে অনুমোদিত হয়নি তাদের ব্যবহারকারীদের সম্মতি জানাতে হবে।

3. জালিয়াতি বিরোধী রাষ্ট্র টোকেন নিশ্চিত করুন

প্রতিক্রিয়াটি আপনাকে অনুরোধে নির্দিষ্ট করা redirect_uri তে প্রেরণ করা হবে। সমস্ত প্রতিক্রিয়া জিজ্ঞাসা স্ট্রিংয়ে ফিরে এসেছে, নীচের মত দেখানো হয়েছে:

0 বি 173ce380

সার্ভারে, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে গুগল থেকে প্রাপ্ত state আপনার প্রথম ধাপে তৈরি হওয়া সেশন টোকেনটির সাথে মেলে। এই রাউন্ড-ট্রিপ যাচাইকরণটি নিশ্চিত করতে সহায়তা করে যে কোনও দূষিত স্ক্রিপ্ট নয়, ব্যবহারকারী অনুরোধ করছেন।

নিম্নলিখিত কোডটি আপনাকে প্রথম ধাপে তৈরি করা সেশন টোকেনের নিশ্চয়তা প্রদর্শন করে:

পিএইচপি

এই নমুনাটি ব্যবহার করার জন্য আপনাকে পিএইচপি-র জন্য গুগল এপিআইএস ক্লায়েন্ট লাইব্রেরিটি ডাউনলোড করতে হবে।

// Ensure that there is no request forgery going on, and that the user
// sending us this connect request is the user that was supposed to.
if ($request->get('state') != ($app['session']->get('state'))) {
  return new Response('Invalid state parameter', 401);
}

জাভা

এই নমুনাটি ব্যবহার করার জন্য আপনাকে জাভা সম্পর্কিত Google APIs ক্লায়েন্ট লাইব্রেরিটি ডাউনলোড করতে হবে download

// Ensure that there is no request forgery going on, and that the user
// sending us this connect request is the user that was supposed to.
if (!request.queryParams("state").equals(
    request.session().attribute("state"))) {
  response.status(401);
  return GSON.toJson("Invalid state parameter.");
}

পাইথন

এই নমুনাটি ব্যবহার করার জন্য আপনাকে পাইথনের জন্য গুগল এপিআইএস ক্লায়েন্ট লাইব্রেরিটি ডাউনলোড করতে হবে।

# Ensure that the request is not a forgery and that the user sending
# this connect request is the expected user.
if request.args.get('state', '') != session['state']:
  response = make_response(json.dumps('Invalid state parameter.'), 401)
  response.headers['Content-Type'] = 'application/json'
  return response

4. অ্যাক্সেস টোকেন এবং আইডি টোকেনের জন্য এক্সচেঞ্জ code

প্রতিক্রিয়াতে একটি code প্যারামিটার, একটি এককালীন অনুমোদন কোড অন্তর্ভুক্ত যা আপনার সার্ভারটি অ্যাক্সেস টোকেন এবং আইডি টোকেনের জন্য বিনিময় করতে পারে। আপনার সার্ভারটি এইচটিটিপিএস POST অনুরোধ প্রেরণ করে এই এক্সচেঞ্জ তৈরি করে। POST অনুরোধটি টোকেন শেষ পয়েন্টে প্রেরণ করা হয়েছে, যা আপনার token_endpoint মেটাডেটা মান ব্যবহার করে আবিষ্কারের নথি থেকে উদ্ধার করা উচিত। নিম্নলিখিত আলোচনার সমাপ্তিটি হ'ল https://oauth2.googleapis.com/token । অনুরোধটি অবশ্যই POST নিম্নলিখিত প্যারামিটারগুলি অন্তর্ভুক্ত করে:

ক্ষেত্র
code প্রাথমিক অনুরোধ থেকে ফিরে আসা অনুমোদনের কোড।
client_id OAuth 2.0 শংসাপত্রগুলি বর্ণিত হিসাবে আপনি API Console Credentials page থেকে প্রাপ্ত ক্লায়েন্ট আইডি obtain
client_secret OAuth 2.0 শংসাপত্রগুলি বর্ণিত হিসাবে আপনি API Console Credentials page থেকে প্রাপ্ত ক্লায়েন্টের গোপনীয়তা।
redirect_uri একজন অনুমোদিত পুনর্নির্দেশ দেওয়া কোনো URI client_id , API Console Credentials page উল্লেখিত বর্ণনা অনুযায়ী সেট একটি পুনঃচালনা কোনো URI
grant_type এই ক্ষেত্রের একটি মান থাকা আবশ্যক authorization_code , যেমন OAuth এর 2.0 স্পেসিফিকেশন সংজ্ঞায়িত

আসল অনুরোধটি নীচের উদাহরণের মতো দেখাবে:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=your-client-id&
client_secret=your-client-secret&
redirect_uri=https%3A//oauth2.example.com/code&
grant_type=authorization_code

এই অনুরোধটির সফল প্রতিক্রিয়াতে জেএসওএন অ্যারেতে নিম্নলিখিত ক্ষেত্রগুলি রয়েছে:

ক্ষেত্র
access_token একটি টোকেন যা গুগল এপিআইতে প্রেরণ করা যায়।
expires_in সেকেন্ডের মধ্যে অ্যাক্সেস টোকেনের অবশিষ্ট জীবনকাল।
id_token একটি জেডাব্লুটিটিতে এমন ব্যবহারকারী সম্পর্কে পরিচয় সম্পর্কিত তথ্য রয়েছে যা গুগল দ্বারা ডিজিটালি স্বাক্ষরিত হয়েছে।
scope অ্যাক্সেস_ access_token দ্বারা প্রদত্ত অ্যাক্সেসের স্কোপগুলি স্থান-সীমিত, কেস-সংবেদনশীল স্ট্রিংগুলির তালিকা হিসাবে প্রকাশিত।
token_type প্রত্যাবর্তনের টোকেনের ধরণ চিহ্নিত করে। এই সময়ে, এই ক্ষেত্রটির সর্বদা মান Bearer
refresh_token (alচ্ছিক)

প্রমাণীকরণের অনুরোধে access_type প্যারামিটারটি offline সেট করা থাকলে এই ক্ষেত্রটি কেবল উপস্থিত। বিশদের জন্য, টোকেনগুলি রিফ্রেশ দেখুন।

৫. আইডি টোকেন থেকে ব্যবহারকারীর তথ্য গ্রহণ করুন

একটি আইডি টোকেন হ'ল একটি জেডাব্লুটি (জেএসএন ওয়েব টোকেন), এটি একটি ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত বেস 64-এনকোড জেএসএন বস্তু। সাধারণত, এটি একটি সমালোচনা যে আপনি কোনও আইডি টোকেন ব্যবহারের আগেই এটি বৈধ করেছেন, তবে যেহেতু আপনি কোনও মধ্যস্থতাকারী মুক্ত এইচটিটিপিএস চ্যানেলের মাধ্যমে গুগলের সাথে সরাসরি যোগাযোগ করছেন এবং গুগলের কাছে নিজেকে প্রমাণ করার জন্য আপনার ক্লায়েন্টের গোপনীয়তা ব্যবহার করছেন, আপনি আত্মবিশ্বাসী হতে পারেন প্রাপ্তি সত্যিই গুগল থেকে আসে এবং বৈধ। যদি আপনার সার্ভারটি আপনার অ্যাপ্লিকেশনের অন্যান্য উপাদানগুলিতে আইডি টোকেনটি দেয়, তবে অন্যান্য উপাদানগুলি এটি ব্যবহার করার আগে টোকেনটি বৈধ করে তোলা অত্যন্ত গুরুত্বপূর্ণ।

যেহেতু বেশিরভাগ এপিআই লাইব্রেরিগুলি বেস 64৪url-encoded মানগুলি ডিকোড করার এবং JSON এর মধ্যে পার্স করার কাজের সাথে বৈধতাটি একত্রিত করে, আপনি আইডি টোকেনে দাবিগুলি অ্যাক্সেস করার সাথে সাথে আপনি সম্ভবত টোকেনটিকে বৈধতা দেবেন।

একটি আইডি টোকেনের পেডলোড

আইডি টোকেন হল একটি জেএসওএন অবজেক্ট যা নাম / মান জোড়ার একটি সেট থাকে। এখানে পাঠযোগ্যতার জন্য ফর্ম্যাট করা একটি উদাহরণ রয়েছে:

{
  "iss": "https://accounts.google.com",
  "azp": "1234987819200.apps.googleusercontent.com",
  "aud": "1234987819200.apps.googleusercontent.com",
  "sub": "10769150350006150715113082367",
  "at_hash": "HK6E_P6Dh8Y93mRNtsDB1Q",
  "hd": "example.com",
  "email": "jsmith@example.com",
  "email_verified": "true",
  "iat": 1353601026,
  "exp": 1353604926,
  "nonce": "0394852-3190485-2490358"
}

গুগল আইডি টোকনে নিম্নলিখিত ক্ষেত্রগুলি থাকতে পারে ( দাবি হিসাবে পরিচিত):

দাবি প্রদত্ত বর্ণনা
aud সর্বদা এই আইডি টোকেনটি দর্শকের জন্য। এটি অবশ্যই আপনার আবেদনের OAuth 2.0 ক্লায়েন্ট আইডিগুলির একটি হতে হবে।
exp সর্বদা মেয়াদ শেষ হওয়ার সময় বা তার পরে আইডি টোকেন গ্রহণ করা উচিত নয়। ইউনিক্স সময় (পূর্ণসংখ্যার সেকেন্ড) মধ্যে উপস্থাপন।
iat সর্বদা আইডি টোকেন জারি করার সময়। ইউনিক্স সময় (পূর্ণসংখ্যার সেকেন্ড) মধ্যে উপস্থাপন।
iss সর্বদা প্রতিক্রিয়া প্রদানকারীর জন্য ইস্যুয়ার আইডেন্টিফায়ার। গুগল আইডি টোকেনের জন্য সর্বদা https://accounts.google.com বা accounts.google.com .google.com.com।
sub সর্বদা ব্যবহারকারীর জন্য একটি শনাক্তকারী, সমস্ত গুগল অ্যাকাউন্টের মধ্যে অনন্য এবং কখনও পুনরায় ব্যবহার করা হয়নি। একটি গুগল অ্যাকাউন্টে বিভিন্ন সময়ে বিভিন্ন সময়ে একাধিক ইমেল ঠিকানা থাকতে পারে, তবে sub মানটি কখনই পরিবর্তন হয় না। ব্যবহারকারীর জন্য অনন্য-শনাক্তকারী কী হিসাবে আপনার অ্যাপ্লিকেশনটির মধ্যে sub ব্যবহার করুন। সর্বাধিক দৈর্ঘ্যের 255 কেস-সংবেদনশীল ASCII অক্ষর।
at_hash অ্যাক্সেস টোকেন হ্যাশ। অ্যাক্সেস টোকেনটি পরিচয় টোকেনের সাথে আবদ্ধ রয়েছে এমন বৈধতা সরবরাহ করে। আইডি টোকেনটি যদি সার্ভার প্রবাহে access_token টোকেন মানটি দিয়ে জারি করা হয় তবে এই দাবিটি সর্বদা অন্তর্ভুক্ত থাকে। এই দাবিটি ক্রস-সাইট অনুরোধ জালিয়াতির আক্রমণগুলির বিরুদ্ধে সুরক্ষার জন্য বিকল্প ব্যবস্থা হিসাবে ব্যবহার করা যেতে পারে, তবে আপনি যদি পদক্ষেপ 1 এবং পদক্ষেপ 3 অনুসরণ করেন তবে অ্যাক্সেস টোকেন যাচাই করা প্রয়োজন হয় না।
azp অনুমোদিত উপস্থাপকের client_id । এই দাবিটি কেবল তখনই প্রয়োজন যখন আইডি টোকেনটির জন্য অনুরোধ করা পক্ষ আইডি টোকেনের দর্শকদের মত নয়। হাইব্রিড অ্যাপ্লিকেশনগুলির ক্ষেত্রে এটি গুগলের ক্ষেত্রে হতে পারে যেখানে একটি ওয়েব অ্যাপ্লিকেশন এবং অ্যান্ড্রয়েড অ্যাপ্লিকেশনটির আলাদা OAuth 2.0 client_id তবে একই Google APIs প্রকল্পটি ভাগ করে নিন।
email ব্যবহারকারীর ইমেল ঠিকানা। এই মানটি এই ব্যবহারকারীর কাছে অনন্য নয় এবং প্রাথমিক কী হিসাবে ব্যবহারের জন্য উপযুক্ত নয়। আপনার স্কোপটিতে email স্কোপ মানটি অন্তর্ভুক্ত থাকলেই সরবরাহ করা হয়।
email_verified সত্য যদি ব্যবহারকারীর ইমেল ঠিকানা যাচাই করা হয়েছে; অন্যথায় মিথ্যা।
family_name ব্যবহারকারীর উপাধি (গুলি) বা পদবি (গুলি)। কোনও name দাবি উপস্থিত থাকলে সরবরাহ করা যেতে পারে।
given_name ব্যবহারকারীর প্রদত্ত নাম (গুলি) বা প্রথম নাম (গুলি)। কোনও name দাবি উপস্থিত থাকলে সরবরাহ করা যেতে পারে।
hd ব্যবহারকারীর হোস্টেড জি স্যুট ডোমেন। কেবলমাত্র যদি ব্যবহারকারী কোনও হোস্ট করা ডোমেনের অন্তর্ভুক্ত থাকে তবে সরবরাহ করা হয়।
locale ব্যবহারকারীর লোকেল, একটি বিসিপি 47 ভাষা ট্যাগ দ্বারা উপস্থাপিত। কোনও name দাবি উপস্থিত থাকলে সরবরাহ করা যেতে পারে।
name প্রদর্শনযোগ্য আকারে ব্যবহারকারীর পুরো নাম। সরবরাহ করা যেতে পারে যখন:
  • অনুরোধের সুযোগটিতে স্ট্রিং "প্রোফাইল" অন্তর্ভুক্ত রয়েছে
  • আইডি টোকেনটি টোকেন রিফ্রেশ থেকে ফিরে আসে

যখন name দাবিগুলি উপস্থিত থাকে, আপনি এগুলি আপনার অ্যাপ্লিকেশানের ব্যবহারকারীর রেকর্ড আপডেট করতে ব্যবহার করতে পারেন। নোট করুন যে এই দাবিটি উপস্থিত থাকার নিশ্চয়তা নেই।

nonce প্রমাণীকরণের অনুরোধে আপনার অ্যাপ্লিকেশন দ্বারা সরবরাহ করা nonce মান। এটি একবারে উপস্থাপন করা হয়েছে তা নিশ্চিত করে আপনার রিপ্লে আক্রমণগুলির বিরুদ্ধে সুরক্ষা প্রয়োগ করা উচিত।
picture ব্যবহারকারীর প্রোফাইল চিত্রের URL। সরবরাহ করা যেতে পারে যখন:
  • অনুরোধের সুযোগটিতে স্ট্রিং "প্রোফাইল" অন্তর্ভুক্ত রয়েছে
  • আইডি টোকেনটি টোকেন রিফ্রেশ থেকে ফিরে আসে

যখন picture দাবী উপস্থিত থাকে আপনি এগুলি আপনার অ্যাপ্লিকেশানের ব্যবহারকারীর রেকর্ড আপডেট করতে ব্যবহার করতে পারেন। নোট করুন যে এই দাবিটি উপস্থিত থাকার নিশ্চয়তা নেই।

profile ব্যবহারকারীর প্রোফাইল পৃষ্ঠার URL। সরবরাহ করা যেতে পারে যখন:
  • অনুরোধের সুযোগটিতে স্ট্রিং "প্রোফাইল" অন্তর্ভুক্ত রয়েছে
  • আইডি টোকেনটি টোকেন রিফ্রেশ থেকে ফিরে আসে

profile দাবী উপস্থিত থাকলে আপনি এটিকে আপনার অ্যাপ্লিকেশানের ব্যবহারকারীর রেকর্ড আপডেট করতে ব্যবহার করতে পারেন। নোট করুন যে এই দাবিটি উপস্থিত থাকার নিশ্চয়তা নেই।

The. ব্যবহারকারীকে প্রমাণীকরণ করুন

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

যদি ব্যবহারকারী আপনার ব্যবহারকারীর ডাটাবেসে উপস্থিত না থাকে, আপনার ব্যবহারকারীকে আপনার নতুন-ব্যবহারকারী সাইন-আপ প্রবাহে পুনর্নির্দেশ করা উচিত। আপনি গুগল থেকে প্রাপ্ত তথ্যের উপর ভিত্তি করে ব্যবহারকারীকে স্বয়ংক্রিয়ভাবে নিবন্ধভুক্ত করতে সক্ষম হতে পারেন বা খুব কমপক্ষে আপনি আপনার নিবন্ধকরণ ফর্মের জন্য প্রয়োজনীয় ক্ষেত্রগুলির অনেকগুলি প্রাক-জনবসতি করতে সক্ষম হতে পারেন। আইডি টোকেনের তথ্য ছাড়াও, আপনি আমাদের ব্যবহারকারীর প্রোফাইলের শেষ পয়েন্টগুলিতে অতিরিক্ত ব্যবহারকারী প্রোফাইল তথ্য পেতে পারেন।

উন্নত বিষয়

নিম্নলিখিত বিভাগগুলি আরও বেশি বিশদে গুগল ওআউথ ২.০ এপিআই বর্ণনা করে। এই তথ্যটি প্রমাণীকরণ এবং অনুমোদনের আশেপাশে উন্নত প্রয়োজনীয়তা সহ বিকাশকারীদের জন্য।

অন্যান্য গুগল এপিআইতে অ্যাক্সেস

প্রমাণীকরণের জন্য OAuth 2.0 ব্যবহার করার একটি সুবিধা হ'ল আপনার অ্যাপ্লিকেশনটি ব্যবহারকারীর (যেমন ইউটিউব, গুগল ড্রাইভ, ক্যালেন্ডার, বা পরিচিতিগুলি) ব্যবহারকারীর পক্ষে একই সাথে অন্যান্য Google API ব্যবহার করার অনুমতি পেতে পারে। এটি করার জন্য , আপনি গুগলে প্রেরিত অনুমোদনের অনুরোধে আপনার অন্যান্য স্কোপগুলি অন্তর্ভুক্ত করুন। উদাহরণস্বরূপ, আপনার প্রমাণীকরণের অনুরোধে ব্যবহারকারীর বয়স গোষ্ঠীটি যুক্ত করতে, openid email https://www.googleapis.com/auth/profile.agerange.read এর একটি স্কোপ প্যারামিটার পাস করুন। ব্যবহারকারীকে সম্মতি স্ক্রিনে যথাযথভাবে অনুরোধ জানানো হয়। আপনি গুগল থেকে ফিরে যে অ্যাক্সেস টোকেনটি পেয়েছেন তা আপনাকে অনুরোধ করা এবং মঞ্জুর করা অ্যাক্সেসের স্কোপ সম্পর্কিত সমস্ত API গুলি অ্যাক্সেস করার অনুমতি দেয়।

রিফ্রেশ টোকেন

আপনার এপিআই অ্যাক্সেসের জন্য অনুরোধে আপনি code এক্সচেঞ্জের সময় ফেরত দেওয়ার জন্য একটি রিফ্রেশ টোকেনের জন্য অনুরোধ করতে পারেন। রিফ্রেশ টোকেন ব্যবহারকারী আপনার অ্যাপ্লিকেশনে উপস্থিত না থাকাকালীন আপনার অ্যাপ্লিকেশনটিকে Google এপিআইগুলিতে অবিচ্ছিন্ন অ্যাক্সেস সরবরাহ করে। রিফ্রেশ access_type অনুরোধ offline , আপনার অনুমোদনের অনুরোধে access_type প্যারামিটারটিকে offline সেট করুন।

বিবেচনা:

  • রিফ্রেশ টোকেনটি নিরাপদে এবং স্থায়ীভাবে সংরক্ষণ করার বিষয়ে নিশ্চিত হন, আপনি কোড এক্সচেঞ্জের প্রবাহটি সম্পাদন করলেই আপনি কেবল প্রথমবারেই রিফ্রেশ টোকনটি পেতে পারেন।
  • জারি করা রিফ্রেশ টোকেনের সংখ্যার সীমাবদ্ধতা রয়েছে: ক্লায়েন্ট / ব্যবহারকারীর সংমিশ্রনের জন্য একটি সীমা, এবং সমস্ত ক্লায়েন্ট জুড়ে ব্যবহারকারী প্রতি অন্য another যদি আপনার অ্যাপ্লিকেশনটি অনেক বেশি রিফ্রেশ টোকেনের জন্য অনুরোধ করে তবে এটি এই সীমাতে চলে যেতে পারে, সেক্ষেত্রে পুরানো রিফ্রেশ টোকেনগুলি কাজ করা বন্ধ করে দেয়।

আরও তথ্যের জন্য, অ্যাক্সেস টোকেন (অফলাইন অ্যাক্সেস) রিফ্রেশ করুন দেখুন।

আপনি আপনার অনুমোদনের অনুরোধে consent prompt প্যারামিটার সেট করে আপনার অ্যাপ্লিকেশনটিকে পুনরায় অনুমোদনের জন্য অনুরোধ করতে পারেনprompt=consent অন্তর্ভুক্ত করা হলে, সমস্ত অ্যাপ্লিকেশন আপনার গুগল এপিআই প্রকল্পে পূর্বে মঞ্জুর করা হলেও আপনার অ্যাপ্লিকেশনটি যখনই অ্যাক্সেসের সুযোগকে অনুমোদনের জন্য অনুরোধ করে তখন prompt=consent সম্মতি স্ক্রিন প্রদর্শিত হয়। এই কারণে, যখন প্রয়োজন হবে তখনই prompt=consent অন্তর্ভুক্ত করুন।

prompt প্যারামিটার সম্পর্কে আরও জানতে, প্রমাণীকরণের ইউআরআই প্যারামিটার সারণীতে prompt দেখুন।

প্রমাণীকরণের ইউআরআই প্যারামিটার

নিম্নলিখিত টেবিলটি গুগলের OAuth 2.0 প্রমাণীকরণ এপিআই দ্বারা গৃহীত পরামিতিগুলির আরও সম্পূর্ণ বিবরণ দেয়।

প্যারামিটার প্রয়োজনীয় বর্ণনা
client_id (প্রয়োজনীয়) OAuth 2.0 শংসাপত্রগুলি বর্ণিত হিসাবে আপনি API Console Credentials page থেকে প্রাপ্ত ক্লায়েন্ট আইডি স্ট্রিং।
nonce (প্রয়োজনীয়) আপনার অ্যাপ্লিকেশন দ্বারা উত্পাদিত একটি এলোমেলো মান যা রিপ্লে সুরক্ষা সক্ষম করে।
response_type (প্রয়োজনীয়) মানটি যদি code হয় তবে একটি বেসিক অনুমোদনের কোড প্রবাহ চালু করে, টোকেনগুলি পাওয়ার জন্য টোকেনের শেষ পয়েন্টে একটি POST প্রয়োজন। যদি মান token id_token বা id_token token token id_token হয় তবে একটি অন্তর্নিহিত প্রবাহ প্রবর্তন করে, যা ইউআরআই #fragment শনাক্তকারী থেকে টোকেনগুলি পুনরুদ্ধার করতে পুনর্নির্দেশিত #fragment জাভাস্ক্রিপ্টের ব্যবহারের প্রয়োজন।
redirect_uri (প্রয়োজনীয়) কোথায় প্রতিক্রিয়া প্রেরণ করা হয়েছে তা নির্ধারণ করে। এই প্যারামিটারটির মান অবশ্যই আপনাকে API Console Credentials page (এইচটিটিপি বা এইচটিটিপিএস স্কিম, কেস এবং ট্রেলিং '/' সহ, যদি কোনও) নির্ধারিত অনুমোদিত পুনর্নির্দেশ মানগুলির একটির সাথে অবশ্যই মিলবে।
scope (প্রয়োজনীয়)

স্কোপ প্যারামিটারটি অবশ্যই openid মান দিয়ে শুরু হওয়া উচিত এবং তারপরে profile মান, email মান বা উভয়ই অন্তর্ভুক্ত করতে হবে।

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

যদি email স্কোপ মান উপস্থিত থাকে তবে আইডি টোকেনে email এবং email_verified দাবি অন্তর্ভুক্ত থাকে।

এই ওপেনআইডি-নির্দিষ্ট স্কোপগুলি ছাড়াও, আপনার স্কোপ আর্গুমেন্টে অন্যান্য স্কোপ মানগুলিও অন্তর্ভুক্ত থাকতে পারে। সমস্ত স্কোপ মানগুলি অবশ্যই স্থান-বিভাজিত হতে হবে। উদাহরণস্বরূপ, আপনি যদি কোনও ব্যবহারকারীর গুগল ড্রাইভে প্রতি ফাইল-অ্যাক্সেস চেয়েছিলেন তবে আপনার স্কোপ পরামিতিটি openid profile email https://www.googleapis.com/auth/drive.file হতে পারে।

উপলভ্য স্কোপগুলি সম্পর্কে তথ্যের জন্য, গুগল APIs এর জন্য OAuth 2.0 স্কোপগুলি বা আপনি যে গুগল API ব্যবহার করতে চান তার জন্য ডকুমেন্টেশন দেখুন।

state (Alচ্ছিক, তবে দৃ strongly়ভাবে প্রস্তাবিত)

একটি অস্বচ্ছ স্ট্রিং যা প্রোটোকলে বৃত্তাকারে ছড়িয়ে পড়ে; এর অর্থ এটি, মূল প্রবাহে এটি ইউআরআই প্যারামিটার হিসাবে ফিরে আসে, এবং #fragment প্রবাহে ইউআরআই #fragment সনাক্তকারী হিসাবে।

অনুরোধ এবং প্রতিক্রিয়াগুলির সাথে সম্পর্কিত সম্পর্কিত state হতে পারে। আপনার redirect_uri অনুমান করা যায়, একটি state মান ব্যবহার করা আপনার নিশ্চয়তা বাড়াতে পারে যে আগত সংযোগটি আপনার অ্যাপ্লিকেশন দ্বারা প্রবর্তিত একটি প্রমাণীকরণ অনুরোধের ফলাফল। আপনি যদি একটি র্যান্ডম স্ট্রিং উৎপন্ন বা এই মধ্যে কিছু ক্লায়েন্ট রাষ্ট্র (যেমন, একটি কুকি) এর হ্যাশ এনকোড state পরিবর্তনশীল, আপনি প্রতিক্রিয়া যাচাই অতিরিক্ত তা নিশ্চিত করার জন্য অনুরোধ এবং প্রতিক্রিয়া একই ব্রাউজারে সম্ভূত পারবেন না। এটি ক্রস-সাইট অনুরোধ জালিয়াতির মতো আক্রমণগুলির বিরুদ্ধে সুরক্ষা সরবরাহ করে।

access_type (Ptionচ্ছিক) অনুমোদিত মানগুলি offline এবং online । প্রভাব অফলাইন অ্যাক্সেস নথিভুক্ত করা হয়; যদি অ্যাক্সেস টোকেনের জন্য অনুরোধ করা হচ্ছে তবে ক্লায়েন্ট offline মান নির্দিষ্ট না করা পর্যন্ত রিফ্রেশ টোকন গ্রহণ করবে না।
display (Ptionচ্ছিক) অনুমোদনের সার্ভারটি প্রমাণীকরণ এবং সম্মতি ব্যবহারকারী ইন্টারফেস পৃষ্ঠাগুলি কীভাবে প্রদর্শন করে তা নির্দিষ্ট করার জন্য একটি এএসসিআইআই স্ট্রিং মান value নিম্নলিখিত মানগুলি নির্দিষ্ট করা হয়েছে এবং গুগল সার্ভার দ্বারা স্বীকৃত, তবে এর আচরণে কোনও প্রভাব ফেলবে না: page , popup , touch এবং wap
hd (Ptionচ্ছিক)

hd (হোস্ট করা ডোমেন) প্যারামিটার জি স্যুইট হোস্ট করা অ্যাকাউন্টগুলির জন্য লগইন প্রক্রিয়াটি প্রবাহিত করে। জি স্যুট ব্যবহারকারীর ডোমেন অন্তর্ভুক্ত করে (উদাহরণস্বরূপ, mycollege.edu ), আপনি চিহ্নিত করতে পারেন যে অ্যাকাউন্ট নির্বাচন ইউআই সেই ডোমেনের অ্যাকাউন্টগুলির জন্য অনুকূলিত হওয়া উচিত। সাধারণত কেবলমাত্র একটি ডোমেনের পরিবর্তে জি স্যুট অ্যাকাউন্টগুলির জন্য অনুকূলিতকরণের জন্য একটি নক্ষত্র ( * ) এর মান নির্ধারণ করুন: hd=*

আপনার অ্যাপ্লিকেশনটি কে অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করতে এই UI অপ্টিমাইজেশানের উপর নির্ভর করবেন না, কারণ ক্লায়েন্ট-সাইড অনুরোধগুলি সংশোধন করা যেতে পারে। নিশ্চিত করা বৈধকরণ যে ফিরে আইডি টোকেন একটি হয়েছে hd দাবি মান ম্যাচ কি আপনি আশা করতে (যেমন mycolledge.edu )। অনুরোধ প্যারামিটারের বিপরীতে, আইডি টোকেন hd দাবিটি গুগলের সুরক্ষা টোকেনের মধ্যে রয়েছে, সুতরাং মানটি বিশ্বাস করা যায়।

include_granted_scopes (Ptionচ্ছিক) যদি এই প্যারামিটারটি মানটি true দিয়ে সরবরাহ করা হয় এবং অনুমোদনের অনুরোধটি মঞ্জুরিপ্রাপ্ত হয়, তবে অনুমোদনের মধ্যে অন্যান্য স্কোপের জন্য এই ব্যবহারকারীর / অ্যাপ্লিকেশন সংমিশ্রণটিকে দেওয়া পূর্ববর্তী কোনও অনুমোদন অন্তর্ভুক্ত থাকবে; বর্ধিত অনুমোদন দেখুন

নোট করুন যে আপনি ইনস্টল করা অ্যাপ প্রবাহের মাধ্যমে বর্ধিত অনুমোদন করতে পারবেন না।

login_hint (Ptionচ্ছিক) যখন আপনার অ্যাপটি জানবে যে এটি কোন ব্যবহারকারীর প্রমাণীকরণের চেষ্টা করছে, এটি প্রমাণীকরণের সার্ভারে এই পরামিতিটিকে ইঙ্গিত হিসাবে সরবরাহ করতে পারে। এই ইঙ্গিতটি পাস করা অ্যাকাউন্ট চয়নকারীকে দমন করে এবং হয় সাইন ইন ফর্মটিতে ইমেল বাক্সটি পূর্বে পূরণ করে, বা সঠিক সেশনটি নির্বাচন করে (যদি ব্যবহারকারী একাধিক সাইন-ইন ব্যবহার করে থাকে), যা আপনার অ্যাপ্লিকেশনটি যদি ঘটে থাকে তবে সমস্যাগুলি এড়াতে আপনাকে সহায়তা করতে পারে ভুল ব্যবহারকারীর অ্যাকাউন্টে লগ। মানটি কোনও ইমেল ঠিকানা বা sub স্ট্রিং হতে পারে যা ব্যবহারকারীর গুগল আইডির সমতুল্য।
prompt (Ptionচ্ছিক) স্ট্রিং মানগুলির একটি স্পেস-সীমিত তালিকা যা অনুমোদন সার্ভারটি ব্যবহারকারীকে পুনরায় প্রমাণীকরণ এবং সম্মতির জন্য অনুরোধ করে কিনা তা নির্দিষ্ট করে। সম্ভাব্য মানগুলি হ'ল:
  • none

    অনুমোদন সার্ভার কোনও প্রমাণীকরণ বা ব্যবহারকারীর সম্মতি পর্দা প্রদর্শন করে না; যদি ব্যবহারকারী ইতিমধ্যে প্রমাণীকৃত না হয়ে থাকে এবং অনুরোধকৃত স্কোপের জন্য পূর্ব-কনফিগার করা সম্মতি না দেয় তবে এটি একটি ত্রুটি ফিরিয়ে দেবে। বিদ্যমান প্রমাণীকরণ এবং / অথবা সম্মতি পরীক্ষা করার জন্য আপনি কোনওটিই ব্যবহার করতে পারবেন none

  • consent

    অনুমোদন সার্ভার ক্লায়েন্টের কাছে তথ্য ফেরত দেওয়ার আগে ব্যবহারকারীকে সম্মতির জন্য অনুরোধ করে।

  • select_account

    অনুমোদন সার্ভার ব্যবহারকারীকে একটি ব্যবহারকারী অ্যাকাউন্ট নির্বাচন করতে অনুরোধ করে। এটি অনুমোদনের সার্ভারে এমন একাধিক অ্যাকাউন্ট রয়েছে এমন একাধিক অ্যাকাউন্টের মধ্যে তাদের বর্তমান সেশন থাকতে পারে এমনগুলির মধ্যে এটি নির্বাচন করতে অনুমতি দেয়।

যদি কোনও মান নির্দিষ্ট না করা থাকে এবং ব্যবহারকারী এর আগে অ্যাক্সেসের অনুমতি না দেয় তবে ব্যবহারকারীকে সম্মতি স্ক্রিন প্রদর্শিত হয়।

একটি আইডি টোকেন যাচাই করা হচ্ছে

আপনার সার্ভারে সমস্ত আইডি টোকেন যাচাই করা দরকার যদি না আপনি জানেন যে এগুলি সরাসরি গুগল থেকে এসেছে। উদাহরণস্বরূপ, আপনার সার্ভারকে অবশ্যই আপনার ক্লায়েন্ট অ্যাপ্লিকেশনগুলি থেকে প্রাপ্ত কোনও আইডি টোকেন খাঁটি হিসাবে তা যাচাই করতে হবে।

নিম্নলিখিতগুলি সাধারণ পরিস্থিতি যেখানে আপনি আপনার সার্ভারে আইডি টোকেন প্রেরণ করতে পারেন:

  • অনুরোধগুলির সাথে আইডি টোকেনগুলি প্রেরণ করা হচ্ছে যা প্রমাণীকরণ করা দরকার। আইডি টোকেন আপনাকে অনুরোধ করা নির্দিষ্ট ব্যবহারকারী এবং কোন ক্লায়েন্টের জন্য সেই আইডি টোকেন মঞ্জুর করা হয়েছিল তা আপনাকে বলে।

আইডি টোকেনগুলি সংবেদনশীল এবং যদি বাধা দেওয়া হয় তবে এটির অপব্যবহার করা যায়। আপনাকে অবশ্যই নিশ্চিত করতে হবে যে এই টোকেনগুলি কেবলমাত্র HTTPS- র মাধ্যমে এবং কেবলমাত্র POST ডেটার মাধ্যমে বা অনুরোধ শিরোনামের মধ্যে সঞ্চারিতভাবে সুরক্ষিতভাবে পরিচালিত হয়েছে। আপনি যদি নিজের সার্ভারে আইডি টোকেন সঞ্চয় করেন তবে আপনাকে অবশ্যই সেগুলি নিরাপদে সংরক্ষণ করতে হবে।

একটি জিনিস যা আইডি টোকেনকে দরকারী করে তোলে তা হ'ল আপনি এটিকে আপনার অ্যাপ্লিকেশনের বিভিন্ন উপাদানগুলিতে পাস করতে পারেন। এই উপাদানগুলি একটি আইডি টোকেনটিকে লাইটওয়েট প্রমাণীকরণ প্রক্রিয়া হিসাবে অ্যাপ্লিকেশন এবং ব্যবহারকারীকে প্রমাণীকরণ হিসাবে ব্যবহার করতে পারে। আপনি আইডি টোকেনের তথ্য ব্যবহার করার আগে বা ব্যবহারকারীর অনুমোদনের সত্যতা হিসাবে এটির উপরে নির্ভর করার আগে আপনাকে অবশ্যই এটি যাচাই করতে হবে।

আইডি টোকেনের বৈধকরণের জন্য কয়েকটি পদক্ষেপ প্রয়োজন:

  1. আইডি টোকেন সঠিকভাবে ইস্যুকারী দ্বারা স্বাক্ষরিত হয়েছে তা যাচাই করুন। গুগল-জারি টোকেনগুলি আবিষ্কারের নথির jwks_uri মেটাডেটা jwks_uri উল্লিখিত jwks_uri পাওয়া একটি শংসাপত্র ব্যবহার করে স্বাক্ষরিত হয়।
  2. আইডি টোকেনে iss দাবির মান https://accounts.google.com বা accounts.google.com .google.com.com এর সমান কিনা তা যাচাই accounts.google.com
  3. যাচাই করুন যে আইডি aud দাবির মানটি আপনার অ্যাপ্লিকেশানের ক্লায়েন্ট আইডির সমান।
  4. যাচাই করুন যে আইডি টোকেনের মেয়াদোত্তীর্ণ সময় ( exp দাবি) পাস করেনি।
  5. আপনি যদি অনুরোধে এইচডি প্যারামিটার মান নির্দিষ্ট করে থাকেন তবে আইডি টোকেনের একটি hd দাবি রয়েছে যা একটি স্বীকৃত জি স্যুইট হোস্ট করা ডোমেনের সাথে মেলে verify

2 থেকে 5 ধাপে কেবল স্ট্রিং এবং তারিখের তুলনা জড়িত যা বেশ সোজা, সুতরাং আমরা সেগুলি এখানে বিশদ বিবরণ করব না।

প্রথম পদক্ষেপটি আরও জটিল এবং এতে ক্রিপ্টোগ্রাফিক স্বাক্ষর পরীক্ষা করা জড়িত। ডিবাগিংয়ের উদ্দেশ্যে, আপনি আপনার সার্ভার বা ডিভাইসে প্রয়োগ করা স্থানীয় প্রক্রিয়াজাতকরণের সাথে তুলনা করতে গুগলের tokeninfo শেষ tokeninfo ব্যবহার করতে পারেন। ধরুন আপনার আইডি টোকেনের মান XYZ123 । তারপরে আপনি ইউআরআই https://oauth2.googleapis.com/tokeninfo?id_token= XYZ123 । যদি টোকেন স্বাক্ষর বৈধ হয় তবে প্রতিক্রিয়াটি এর ডিকোডেড JSON অবজেক্ট ফর্মের JWT পেলোড হবে।

tokeninfo শেষ tokeninfo ডিবাগিংয়ের জন্য দরকারী তবে উত্পাদন উদ্দেশ্যে, কীগুলির শেষ পয়েন্ট থেকে গুগলের পাবলিক কীগুলি পুনরুদ্ধার করুন এবং স্থানীয়ভাবে বৈধতা সম্পাদন করুন। jwks_uri মেটাডেটা মান ব্যবহার করে আবিষ্কারের ডকুমেন্ট থেকে আপনার ইউআরআই কীগুলি পুনরুদ্ধার করা উচিত। ডিবাগিং এন্ডপয়েন্টে অনুরোধগুলি থ্রটলড হতে পারে বা অন্যথায় বিরতিতে ত্রুটিযুক্ত হতে পারে।

যেহেতু গুগল কেবলমাত্র তার পাবলিক কীগুলি কেবলমাত্র অবিচ্ছিন্নভাবে পরিবর্তন করে তাই আপনি এইচটিটিপি প্রতিক্রিয়াটির ক্যাশে নির্দেশনা ব্যবহার করে তাদের ক্যাশে করতে পারেন এবং বেশিরভাগ ক্ষেত্রে tokeninfo ব্যবহার না করে স্থানীয় বৈধতা আরও কার্যকরভাবে সম্পাদন করতে পারেন। এই বৈধতার জন্য শংসাপত্রগুলি পুনরুদ্ধার এবং পার্সিং এবং স্বাক্ষরটি পরীক্ষা করার জন্য উপযুক্ত ক্রিপ্টোগ্রাফিক কল করা দরকার। ভাগ্যক্রমে, এটি সম্পাদন করার জন্য বিভিন্ন ধরণের ভাষায় ভাল-ডিবাগ গ্রন্থাগার রয়েছে ( jwt.io দেখুন )।

ব্যবহারকারীর প্রোফাইল তথ্য প্রাপ্ত

ব্যবহারকারী সম্পর্কে অতিরিক্ত প্রোফাইল তথ্য পেতে, আপনি অ্যাক্সেস টোকেন (যা প্রমাণীকরণের প্রবাহের সময় আপনার অ্যাপ্লিকেশনটি গ্রহণ করে) এবং ওপেনআইডি কানেক্ট স্ট্যান্ডার্ড ব্যবহার করতে পারেন:

  1. ওপেনআইডি-কমপ্লায়েন্ট হতে, আপনাকে অবশ্যই নিজের প্রমাণীকরণের অনুরোধে openid profile স্কোপ মানগুলি অন্তর্ভুক্ত করতে হবে।

    আপনি ব্যবহারকারীর ইমেইল ঠিকানা অন্তর্ভুক্ত করা চান, আপনি একটি অতিরিক্ত সুযোগ মান নির্দিষ্ট করতে পারেন emailprofile এবং email উভয়ই নির্দিষ্ট করতে, আপনি নিজের প্রমাণীকরণের অনুরোধ ইউআরআই-তে নিম্নলিখিত প্যারামিটারটি অন্তর্ভুক্ত করতে পারেন:

    scope=openid%20profile%20email
  2. অনুমোদনের শিরোনামে আপনার অ্যাক্সেস টোকন যুক্ত করুন এবং ইউজারইনফো প্রান্তিক বিন্দুতে একটি HTTPS GET অনুরোধ করুন, যা আপনাকে userinfo_endpoint মেটাডেটা মান ব্যবহার করে আবিষ্কারের নথি থেকে উদ্ধার করতে হবে। OpenID Connect Standard Claims এবং আবিষ্কারের ডকুমেন্টের claims_supported মেটাডেটা মান হিসাবে বর্ণিত হিসাবে ব্যবহারকারীর তথ্য প্রতিক্রিয়ায় ব্যবহারকারীর সম্পর্কে তথ্য অন্তর্ভুক্ত রয়েছে। ব্যবহারকারী বা তাদের সংস্থাগুলি নির্দিষ্ট ক্ষেত্র সরবরাহ বা রোধ করতে পারে, যাতে আপনার অ্যাক্সেসের অনুমোদিত স্কোপের জন্য প্রতিটি ক্ষেত্রের জন্য তথ্য নাও পেতে পারেন।

আবিষ্কারের দলিল

ওপেনআইডি সংযোগ প্রোটোকলটি ব্যবহারকারীদের প্রমাণীকরণের জন্য এবং টোকেন, ব্যবহারকারীর তথ্য এবং পাবলিক কী সহ সংস্থানসমূহের অনুরোধের জন্য একাধিক এন্ডপয়েন্টগুলির ব্যবহার প্রয়োজন।

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

https://accounts.google.com/.well-known/openid-configuration

গুগলের ওপেনআইডি সংযোগ পরিষেবাদি ব্যবহার করার জন্য আপনার অ্যাপ্লিকেশনটিতে আবিষ্কার-দস্তাবেজ ইউআরআই ( https://accounts.google.com/.well-known/openid-configuration Unknown/openid-configration) হার্ড-কোড করা উচিত। আপনার অ্যাপ্লিকেশনটি দস্তাবেজটি এনেছে, প্রতিক্রিয়াতে ক্যাশে করার নিয়ম প্রয়োগ করে, তারপরে এটির প্রয়োজন অনুসারে এন্ডপয়েন্ট পয়েন্ট ইউআরআই পুনরুদ্ধার করে। উদাহরণস্বরূপ, কোনও ব্যবহারকারীকে প্রমাণীকরণ করতে, আপনার কোড অনুমোদনের অনুরোধগুলির জন্য বেস ইউআরআই হিসাবে authorization_endpoint মেটাডেটা মান (নীচের উদাহরণে https://accounts.google.com/o/oauth2/v2/auth ) পুনরুদ্ধার করবে গুগল

এই জাতীয় দলিলের উদাহরণ এখানে; ক্ষেত্রের নামগুলি ওপেনআইডি কানেক্ট ডিসকভারি 1.0 এ নির্দিষ্ট করা আছে (তাদের অর্থের জন্য সেই দস্তাবেজটি দেখুন)। মানগুলি নিখুঁতভাবে বর্ণনামূলক এবং পরিবর্তিত হতে পারে, যদিও এগুলি প্রকৃত গুগল আবিষ্কারের নথিটির সাম্প্রতিক সংস্করণ থেকে অনুলিপি করা হয়েছে:

{
  "issuer": "https://accounts.google.com",
  "authorization_endpoint": "https://accounts.google.com/o/oauth2/v2/auth",
  "device_authorization_endpoint": "https://oauth2.googleapis.com/device/code",
  "token_endpoint": "https://oauth2.googleapis.com/token",
  "userinfo_endpoint": "https://openidconnect.googleapis.com/v1/userinfo",
  "revocation_endpoint": "https://oauth2.googleapis.com/revoke",
  "jwks_uri": "https://www.googleapis.com/oauth2/v3/certs",
  "response_types_supported": [
    "code",
    "token",
    "id_token",
    "code token",
    "code id_token",
    "token id_token",
    "code token id_token",
    "none"
  ],
  "subject_types_supported": [
    "public"
  ],
  "id_token_signing_alg_values_supported": [
    "RS256"
  ],
  "scopes_supported": [
    "openid",
    "email",
    "profile"
  ],
  "token_endpoint_auth_methods_supported": [
    "client_secret_post",
    "client_secret_basic"
  ],
  "claims_supported": [
    "aud",
    "email",
    "email_verified",
    "exp",
    "family_name",
    "given_name",
    "iat",
    "iss",
    "locale",
    "name",
    "picture",
    "sub"
  ],
  "code_challenge_methods_supported": [
    "plain",
    "S256"
  ]
}

আপনি আবিষ্কারের ডকুমেন্ট থেকে মানগুলি ক্যাচ করে কোনও এইচটিটিপি রাউন্ড ট্রিপ এড়াতে সক্ষম হতে পারেন। স্ট্যান্ডার্ড এইচটিটিপি ক্যাচিং শিরোনাম ব্যবহৃত হয় এবং তাদের সম্মান করা উচিত।

ক্লায়েন্ট লাইব্রেরি

নিম্নলিখিত ক্লায়েন্ট লাইব্রেরিগুলি জনপ্রিয় ফ্রেমওয়ার্কগুলির সাথে সংহত করে OAuth 2.0 বাস্তবায়নকে সহজ করে তুলেছে:

ওপেনআইডি কানেক্ট মেনে চলুন

গুগলের ওআউথ ২.০ প্রমাণীকরণ সিস্টেম ওপেনআইডি কানেক্টর কোর স্পেসিফিকেশনের প্রয়োজনীয় বৈশিষ্ট্যগুলিকে সমর্থন করে। যে কোনও ক্লায়েন্ট ওপেনআইডি কানেক্টের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে তাদের এই পরিষেবাদিতে ( ওপেনআইডি অনুরোধ অবজেক্ট বাদে) ইন্টারঅ্যাক্ট করা উচিত।