একটি অরিজিন ট্রায়ালের মাধ্যমে ইমেল ভেরিফিকেশন প্রোটোকল পরীক্ষা করুন

প্রকাশিত: ৮ জুলাই, ২০২৬

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

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

ইমেল যাচাইকরণ এপিআই ব্যবহারকারী প্রম্পট ডেমো
ইমেল যাচাইকরণ এপিআই ব্যবহারকারী প্রম্পট ডেমো

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

আপনি একটি ডেমো অ্যাকাউন্ট দিয়ে কার্যপ্রণালীটি পরখ করে দেখতে পারেন:

ইমেল যাচাইকরণ প্রক্রিয়া

নিম্নলিখিত বিভাগগুলিতে ব্যাখ্যা করা হয়েছে যে ইমেল যাচাইকরণ প্রক্রিয়া শুরু করার জন্য আপনার এবং আপনার ব্যবহারকারীদের কী প্রয়োজন, এবং ইমেল যাচাইকরণ প্রোটোকল (Email Verification Protocol) ব্যবহার করার সময় সম্পূর্ণ কার্যপ্রবাহটি কেমন।

মূল পদগুলি

ইমেল যাচাইকরণ এপিআই-এর মূল পরিভাষাগুলো নিম্নরূপ:

  • যাচাইকারী : যে সাইটটি ইমেল ঠিকানা সংগ্রহ করে এবং তা যাচাই করতে চায়। যাচাইকারীকে নির্ভরকারী পক্ষও (Relying Party) বলা হয়।
  • ইমেল প্রদানকারী : যে পরিষেবা ব্যবহারকারীর ইমেল ঠিকানা সরবরাহ করে, যেমন gmail.com
  • ইস্যুকারী : যে পরিষেবা ব্যবহারকারীর ইমেইলের অ্যাকাউন্ট পরিচালনা করে, যেমন accounts.google.com । ইস্যুকারীকে আইডেন্টিটি প্রোভাইডারও বলা হয়।

কিছু ক্ষেত্রে, ইমেল প্রদানকারী এবং ইস্যুকারী একই ডোমেইন থেকে কার্যক্রম পরিচালনা করতে পারে। তবে, একটি ইমেল ঠিকানা থাকা এবং সংশ্লিষ্ট অ্যাকাউন্টের জন্য একটি সক্রিয় সেশন থাকার মধ্যে পার্থক্য করা গুরুত্বপূর্ণ।

ইমেল যাচাইকরণ প্রবাহের স্থাপত্য
ইমেল যাচাইকরণ প্রবাহের স্থাপত্য

পূর্বশর্ত

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

    • যদি ব্যবহারকারী পূর্বে উক্ত ফিল্ডে একটি ইমেল ঠিকানা প্রবেশ করিয়ে থাকেন, তবে অটোকমপ্লিট ব্যবহার করে সেটি দেখানো হবে।
    • যদি ব্যবহারকারী ক্রোম সেটিংসের "অটোফিল এবং পাসওয়ার্ড" ( chrome://settings/autofill ) অপশন ব্যবহার করে তাদের ইমেল ঠিকানা যোগ করে থাকেন, তাহলে সেটি অটোফিলের মাধ্যমে পূরণ করার সুযোগ দেওয়া হবে।

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

একবার ব্যবহারকারীর ব্রাউজারে সেই সক্রিয় সেশনটি চালু হয়ে গেলে, তিনি প্রক্রিয়াটি শুরু করতে পারেন:

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

  3. এরপর ইস্যুকারী ঠিকানাটির জন্য তাদের ইমেল ভেরিফিকেশন টোকেন (EVT) প্রদান করবে। ব্রাউজারটি সেই টোকেনটিকে EVT, সাইট অরিজিন এবং ইনপুট ফর্ম থেকে প্রাপ্ত ননস-এর সাথে একত্রিত করে একটি কী-বাউন্ড JWT তৈরি করে।

  4. ফর্মটি জমা দেওয়া হলে, EVT প্যাকেজটি হিডেন ফিল্ডে যুক্ত হয়ে সাইটে পাঠানো হয়।

  5. এরপর যাচাইকারী সাইটটি সেই প্রতিটি বিবরণ যাচাই করে: প্রত্যাশিত ইমেল ঠিকানা, ননস, এবং ব্রাউজার ও ইস্যুকারীর স্বাক্ষর।

  6. ব্যবহারকারী একটি ছোট বিজ্ঞপ্তি দেখতে পান, যা তাকে জানায় যে তার ইমেল প্রদানকারী তার ঠিকানাটি যাচাই করেছে।

এই প্রক্রিয়াটি যাচাইকারী সাইটকে নিশ্চিত করে যে ইমেল ঠিকানাটি বৈধ এবং বর্তমান ব্যবহারকারীরই, যার ফলে সাইটটি যাচাইকরণ ইমেল পাঠানো এড়িয়ে যেতে পারে।

ব্যবহারকারীরা সেটিংস > অটোফিল ও পাসওয়ার্ড > যোগাযোগের তথ্য > যাচাইকৃত ইমেল- এর অধীনে তাদের যাচাইকৃত ইমেলগুলি পরিচালনা করতে পারেন (অথবা chrome://settings/contactInfo খুলতে পারেন)।

ব্যবহারের ক্ষেত্রে বিবেচ্য বিষয়সমূহ

ইমেল ভেরিফিকেশন হলো আপনার বিদ্যমান কার্যপ্রণালীর একটি উন্নত সংস্করণ, যা ব্যবহারকারীকে OTP সংগ্রহ করতে বা কোনো লিঙ্কে ক্লিক করার জন্য আপনার সাইট ছেড়ে যাওয়ার প্রয়োজনীয়তা দূর করে। সাইটগুলো লগইন, নিউজলেটার সাইন আপ, অ্যাকাউন্ট তৈরি এবং পাসওয়ার্ড পুনরুদ্ধারের মতো সমস্ত প্রাসঙ্গিক ফর্মে ইমেল ভেরিফিকেশন ফিল্ড যোগ করতে পারে। EVP তখনই সক্রিয় হয় যখন ব্রাউজার এটি সমর্থন করে। সাবমিশনের পর যদি কোনো কোড না পাওয়া যায় বা যাচাইকরণের কোনো ধাপ ব্যর্থ হয়, তবে আপনি আপনার ডিফল্ট ইমেল কনফার্মেশন কার্যপ্রণালীতে ফিরে যেতে পারেন। এর মানে হলো, API-এর জন্য কোনো ফিচার ডিটেকশন নেই; ভেরিফায়ার সাইট EVT-কে ঐচ্ছিক হিসেবে বিবেচনা করে এবং অনুরোধে এটি উপস্থিত থাকলে তা প্রসেস করে।

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

যাচাইকারী সাইটটি বাস্তবায়ন করুন

আরও বিস্তারিত জানার জন্য, আপনি সম্পূর্ণ ডেমো কোডটি ভালোভাবে দেখতে পারেন এবং ইমেল ভেরিফিকেশন এপিআইইমেল ভেরিফিকেশন প্রোটোকল প্রস্তাবনাগুলোতে দেওয়া যাচাইকরণের ধাপগুলো দেখে নিতে পারেন।

ফর্ম ফিল্ডগুলি কনফিগার করুন

আপনার ফর্ম ফিল্ডগুলিতে সঠিক অ্যাট্রিবিউট আছে কিনা তা নিশ্চিত করুন:

<input
  name="email-address"
  type="email"
  autocomplete="email">
<input
  type="hidden"
  name="token"
  nonce="rAnD0m-VaLuE"
  autocomplete="email-verification-token">

ব্রাউজারকে ইমেল ঠিকানার জন্য অটোকমপ্লিট সুবিধা দিতে, email ইনপুটের type এবং autocomplete অ্যাট্রিবিউট দুটিকে email এ সেট করুন।

ফর্মটি জমা দেওয়ার পর নতুন hidden ফিল্ডটি ইমেল ভেরিফিকেশন টোকেন দিয়ে পূরণ করা হবে। প্রয়োজনীয় অ্যাট্রিবিউটগুলো হলো:

  • type="hidden" সেট করুন, কারণ এই ফিল্ডটিতে ব্যবহারকারীর ইনপুটের প্রয়োজন নেই।
  • nonce="rAnD0m-VaLuE" সেট করুন। ফর্ম জমা যাচাই করার জন্য সাইটটিকে অবশ্যই একটি অনন্য সেশন-সংযুক্ত ননস প্রদান করতে হবে।
  • autocomplete="email-verification-token" সেট করুন। ব্রাউজার কোন ফিল্ডটি পূরণ করতে হবে তা শনাক্ত করার জন্য এই অ্যাট্রিবিউটটি ব্যবহার করে।

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

EVT যাচাই করুন

EVT প্যাকেজের প্রতিটি উপাদান যাচাই করার জন্য পাঁচটি ধাপ রয়েছে।

  1. টোকেনটি পার্স করুন।
  2. প্রত্যাশিত মানগুলো যাচাই করুন।
  3. কী বাইন্ডিং যাচাই করুন।
  4. ডিএনএস রেকর্ড যাচাই করুন।
  5. ইস্যুকারীকে শনাক্ত করুন এবং EVT স্বাক্ষর যাচাই করুন।

১. টোকেনটি পার্স করুন

ফর্ম সাবমিশন থেকে প্রাপ্ত কাঁচা ডেটাতে একটি টিল্ড ( ~ ) চিহ্ন দ্বারা পৃথক করা সিলেক্টেড ডিসক্লোজার JSON ওয়েব টোকেন (SD-JWT+KB)- এর মধ্যে EVT এবং স্বাক্ষরিত ক্লেইমগুলো থাকে। আপনাকে এগুলো পৃথক করতে হবে এবং জাভাস্ক্রিপ্ট অবজেক্ট সাইনিং অ্যান্ড এনক্রিপশন (JOSE) হেডার ও পেলোডগুলো ডিকোড করতে হবে (উদাহরণস্বরূপ, Node.js-এর জন্য jose ব্যবহার করে)।

যদি example.com , demo@gmail.com কে যাচাই করে, তাহলে ডিকোড করা পেলোডটি নিচের উদাহরণের মতো দেখায়:

{
  "evtJwtDecodedPayload": {
    "cnf": {
      "jwk": {
        "crv": "Ed25519",
        "kty": "OKP",
        "x": "pUbLiCkEy123pUbLiCkEy123pUbLiCkEy123"
      }
    },
    "email": "demo@gmail.com",
    "email_verified": true,
    "iat": 1782911685,
    "iss": "https://accounts.google.com"
  },
  "kbJwtDecodedPayload": {
    "aud": "https://example.com",
    "iat": 1782911685,
    "nonce": "rAnDoM123rAnDoM123rAnDoM123rAnDoM123",
    "sd_hash": "hAsH456hAsH456hAsH456hAsH456hAsH456"
  }
}

২. প্রত্যাশিত মান যাচাই করুন

পেলোডের মৌলিক মানগুলো আপনার দেওয়া মানগুলোর সাথে মেলে কিনা তা যাচাই করুন:

  • যাচাই করুন যে email_verified true সেট করা আছে।
  • আপনার ফর্মে দেওয়া ইমেল ঠিকানার সাথে email মেলে কিনা তা যাচাই করুন।
  • যাচাই করুন যে nonce আপনার ফর্মে প্রদত্ত ননসের সাথে মেলে।
  • যাচাই করুন যে aud আপনার সাইটের অরিজিনের সাথে মেলে।
  • যাচাই করুন যে iat একটি তুলনামূলকভাবে সাম্প্রতিক টাইমস্ট্যাম্প আছে, উদাহরণস্বরূপ, ফর্মটি রেন্ডার হওয়ার পরের সময়।

৩. কী বাইন্ডিং যাচাই করুন

ব্রাউজারটি টোকেনটিতে স্বাক্ষর করেছে তা নিশ্চিত করার জন্য ট্রানজ্যাকশনটির জন্য একটি অস্থায়ী, ক্ষণস্থায়ী কী তৈরি করে। EVT-তে থাকা cnf (কনফার্মেশন) ক্লেইম থেকে এই কী-টি এক্সট্র্যাক্ট করুন এবং তারপর কী-বাউন্ড JWT ভেরিফাই করার জন্য এটি ব্যবহার করুন।

এরপর, প্রত্যাশিত হ্যাশটি গণনা করুন এবং এটিকে sd_hash ক্লেইমের সাথে তুলনা করুন। নিচের Node.js উদাহরণটিতে দেখানো হয়েছে কীভাবে এই গণনাটি করতে হয়:

const calculatedHash = createHash("sha256")
        .update(evtJwt + "~")
        .digest("base64url");

৪. ডিএনএস রেকর্ড যাচাই করুন

ইমেল অ্যাড্রেস ডোমেইনের জন্য _email-verification DNS রেকর্ডটি যাচাই করুন। উদাহরণস্বরূপ, demo@gmail.com এর জন্য, _email-verification.gmail.com TXT রেকর্ডটি কোয়েরি করুন। এই প্রোভাইডারের ক্ষেত্রে, কোয়েরিটি অ্যাকাউন্ট প্রোভাইডারের অবস্থান, অর্থাৎ accounts.google.com , ফেরত দেয়।

$ dig +short TXT _email-verification.gmail.com
"iss=accounts.google.com"

৫. ইস্যুকারীকে শনাক্ত করুন এবং EVT-এর স্বাক্ষর যাচাই করুন।

নিশ্চিত করুন যে ইস্যুকারী /.well-known/email-verification রিসোর্সটি সরবরাহ করে, যা টোকেন ইস্যু করার জন্য এন্ডপয়েন্ট, সাইটের জন্য JSON ওয়েব কী (JWK), এবং সমর্থিত সাইনিং অ্যালগরিদমগুলো প্রদান করে।

$ curl https://accounts.google.com/.well-known/email-verification
{
  "issuance_endpoint": "https://accounts.google.com/gsi/email-verification/issue",
  "jwks_uri": "https://verifiablecredentials-pa.googleapis.com/.well-known/vc-public-jwks",
  "signing_alg_values_supported": ["EdDSA"]
}

টোকেন থেকে বের করা EVT JWT যাচাই করতে JWK ব্যবহার করুন। বেশিরভাগ JOSE লাইব্রেরি এই যাচাইকরণের জন্য ফাংশন সরবরাহ করে।

যদি পাঁচটি ধাপই সফল হয়, তাহলে আপনি প্রোভাইডারের কাছে ইমেল ঠিকানাটি যাচাই করে ফেলেছেন। অন্যথায়, আপনার স্বাভাবিক কার্যপ্রবাহ অনুযায়ী ব্যবহারকারীকে একটি নিশ্চিতকরণ ইমেল পাঠান।

ইমেল প্রদানকারী এবং ইস্যুকারী পরিষেবা বাস্তবায়ন করুন

আরও বিস্তারিত জানার জন্য, আপনি মক ইমেল প্রোভাইডার ডেমো কোডটি পর্যালোচনা করতে পারেন এবং ইমেল ভেরিফিকেশন এপিআইইমেল ভেরিফিকেশন প্রোটোকল প্রস্তাবনাগুলোতে থাকা ইস্যুয়ার ধাপগুলো দেখতে পারেন।

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

ইস্যুকারী আবিষ্কার কনফিগার করুন

আপনার ডোমেইনের অন্তর্গত কোনো ইমেল ঠিকানা নির্বাচন করা হলে ব্রাউজারগুলো যাতে স্বয়ংক্রিয়ভাবে আপনার যাচাইকরণ এন্ডপয়েন্টগুলো খুঁজে নিতে পারে, সেজন্য DNS এবং একটি .well-known HTTP এন্ডপয়েন্ট ব্যবহার করে আপনার কনফিগারেশনটি উন্মুক্ত করুন।

ডিএনএস ডেলিগেট রেকর্ড কনফিগার করুন

আপনার ইমেল ডোমেনে একটি DNS TXT রেকর্ড কনফিগার করুন যা আপনার ইস্যুকারী আইডেন্টিফায়ারকে যাচাইকরণের কর্তৃত্ব অর্পণ করে। আপনার পরিকাঠামোর উপর নির্ভর করে এই আইডেন্টিফায়ারগুলো একই ডোমেন ব্যবহার করতে পারে।

রেকর্ড ফরম্যাট: _email-verification.<email-domain>

উদাহরণ জোন ফাইল:

_email-verification.example.com IN TXT "iss=accounts.issuer.example"

একটি .well-known/email-verification এন্ডপয়েন্ট হোস্ট করুন

আপনার ইস্যুকারী ডোমেইনের /.well-known/ পাথে একটি JSON মেটাডেটা ফাইল হোস্ট করুন। এই ফাইলে আপনার ইস্যু করার সক্ষমতা এবং আপনার পরিকাঠামো যে ক্রিপ্টোগ্রাফিক স্বাক্ষর অ্যালগরিদমগুলো সমর্থন করে, তার রূপরেখা দেওয়া থাকে।

এন্ডপয়েন্ট: https://<issuer-domain>/.well-known/email-verification

উদাহরণ উত্তর:

{
  "issuance_endpoint": "https://accounts.issuer.example/email-verification/issuance",
  "jwks_uri": "https://accounts.issuer.example/.well-known/vc-public-jwks",
  "signing_alg_values_supported": ["EdDSA", "ES256"]
}

একটি .well-known/web-identity এন্ডপয়েন্ট হোস্ট করুন

একটি অতিরিক্ত .well-known JSON রিসোর্স যা আপনি হয়তো ফেডারেটেড ক্রেডেনশিয়ালস (FedCM) API- এর অংশ হিসেবে ইতিমধ্যেই প্রয়োগ করেছেন। এটি আপনার অ্যাকাউন্টস এন্ডপয়েন্ট এবং লগইন URL-এর লিঙ্ক প্রদান করে।

এন্ডপয়েন্ট: https://<domain>/.well-known/web-identity

উদাহরণ উত্তর:

{
  "accounts_endpoint": "https://accounts.issuer.example/accounts",
  "login_url": "https://accounts.issuer.example/login"
}

একটি অ্যাকাউন্টস এন্ডপয়েন্ট ব্যবহার করুন

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

এন্ডপয়েন্ট: .well-known/web-identity তে যেমন নির্দিষ্ট করা আছে

নিম্নলিখিতটি একটি নমুনা প্রতিক্রিয়া:

{
  "accounts": [
    {
      "id": "demo-example",
      "name": "Demo User",
      "email": "demo@example.com",
      "given_name": "Demo"
    }
  ]
}

লগইন স্ট্যাটাস এপিআই-এর সাথে একীভূত করুন

ব্যবহারকারীর প্রোভাইডারের সাথে একটি সক্রিয় সেশন থাকতে হবে এবং আপনাকে লগইন স্ট্যাটাস এপিআই (Login Status API) ব্যবহার করে ব্রাউজারকে সেই সংকেত দিতে হবে।

যখন কোনো ব্যবহারকারী সফলভাবে সাইন ইন বা সাইন আউট করেন, তখন সংশ্লিষ্ট HTTP রেসপন্স হেডারটি পরিবেশন করুন:

Set-Login: logged-in
Set-Login: logged-out

বিকল্পভাবে, আপনার ওয়েব অ্যাপ্লিকেশন কনটেক্সটে জাভাস্ক্রিপ্ট ব্যবহার করে স্ট্যাটাস আপডেট করুন:

navigator.login.setStatus("logged-in");
navigator.login.setStatus("logged-out");

ইস্যু করার অনুরোধগুলি পরিচালনা করুন

আপনার issuance_endpoint একটি application/x-www-form-urlencoded POST অনুরোধ গ্রহণ করে, যেটিতে request_token থাকে।

নিম্নলিখিত বিভাগগুলিতে ইস্যু করার অনুরোধগুলি পরিচালনা করার সম্পূর্ণ প্রক্রিয়া দেখানো হয়েছে।

১. ইস্যু করার অনুরোধটি যাচাই করুন

আগত ব্রাউজার পেলোডগুলি পার্স এবং যাচাই করুন:

  • পদ্ধতি: POST
  • সেশন যাচাইকরণ: একটি সক্রিয় ও অনুমোদিত পরিচয়ের প্রেক্ষাপট বিদ্যমান আছে কিনা তা নিশ্চিত করতে, অনুরোধের সাথে প্রেরিত ব্যবহারকারীর ফার্স্ট-পার্টি session/authentication কুকিগুলো যাচাই করুন।
  • প্যারামিটার যাচাইকরণ: request_token প্যারামিটারটি (ব্রাউজার দ্বারা তৈরি একটি স্বাক্ষরিত JWT) সংগ্রহ করুন। যাচাই করুন যে এতে প্রত্যাশিত ক্ষণস্থায়ী পাবলিক কী, টার্গেট ইমেল, সঠিক অডিয়েন্স এবং একটি বৈধ টাইমস্ট্যাম্প রয়েছে।

ডিকোড করা টোকেনটি দেখতে অনেকটা এইরকম হবে:

{
  "decodedHeader": {
    "alg": "ES256",
    "typ": "JWT",
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "pUbLiCKeY123pUbLiCKeY123pUbLiCKeY123",
      "y": "pUbLiCKeY456pUbLiCKeY456pUbLiCKeY456"
    }
  },
  "decodedPayload": {
    "iss": "https://accounts.issuer.example",
    "sub": "demo@example.com",
    "email": "demo@example.com",
    "iat": 1780272000,
    "exp": 1780272300
  },
  "signature": "SIGnatURE-123_SIGnatURE-123_SIGnatURE-123"
}

২. একটি টোকেন দিয়ে উত্তর দিন

সেশন এবং রিকোয়েস্ট টোকেন সফলভাবে যাচাই করার পর, নিম্নলিখিত পেলোড ব্যবহার করে একটি স্বাক্ষরিত সিলেক্টিভ ডিসক্লোজার JWT (SD-JWT) তৈরি করুন:

{
  "iss": "https://accounts.issuer.example",
  "iat": 1780272000,
  "exp": 1780272300,
  "cnf": {
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "pUbLiCKeY123pUbLiCKeY123pUbLiCKeY123",
      "y": "pUbLiCKeY456pUbLiCKeY456pUbLiCKeY456"
    }
  },
  "email": "demo@example.com",
  "email_verified": true
}

আপনার প্রাইভেট কী এবং সমর্থিত অ্যালগরিদম ব্যবহার করে পেলোডটি সাইন করুন। উদাহরণস্বরূপ, Node.js-এ jose ব্যবহার করে:

const evtJwt = await new SignJWT(evtPayload)
   .setProtectedHeader({
     alg: "EdDSA",
     kid: PRIVATE_KEY_JWK.kid, // Key ID corresponding to our JWKS keys
     typ: "evt+jwt", // Standard Token Type for EVTs
   })
   .sign(privateKey);

 // Standard SD-JWT compatibility requires appending a trailing tilde "~"
 // to separate the signed token from the key binding section.
 const issuanceToken = `${evtJwt}~`;

সফল প্রতিক্রিয়ার উদাহরণ (HTTP 200):

{
  "issuance_token": "tOkEn123tOkEn123tOkEn123...~"
}

উৎপত্তি বিচারের বিবেচ্য বিষয়

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

আপনি যদি Chrome বাস্তবায়নে কোনো বাগ খুঁজে পান, তাহলে কম্পোনেন্টটির বিরুদ্ধে একটি বাগ রিপোর্ট করুন:

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

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

উন্নয়নের অগ্রগতির সাথে সাথে আমরা এখানে ব্লগে এবং evp-announce@chromium.org মেইলিং লিস্টে আরও আপডেট পোস্ট করব।