Client এবং Server এর মধ্যে Authorization Code এর আদান-প্রদান

Authorization Code Grant Flow (অথরাইজেশন কোড গ্রান্ট ফ্লো) - ওঅথ (OAuth 2.0) - Computer Programming

293

OAuth 2.0 প্রোটোকলে Authorization Code Grant Flow হল একটি গুরুত্বপূর্ণ এবং নিরাপদ অথোরাইজেশন ফ্লো যা সাধারণত Web Applications এবং Server-side Applications-এ ব্যবহৃত হয়। এই প্রবাহে Authorization Code এর মাধ্যমে Client এবং Authorization Server এর মধ্যে আদান-প্রদান ঘটে। এই প্রক্রিয়া সুরক্ষিত এবং ব্যবহৃত হয় যেখানে ব্যবহারকারীর সম্মতি ছাড়া তৃতীয় পক্ষের অ্যাপ্লিকেশনকে তাদের তথ্য অ্যাক্সেস করার অনুমতি দেওয়া হয়।

Authorization Code Grant Flow

এই প্রবাহে Client (অর্থাৎ অ্যাপ্লিকেশন) প্রথমে Authorization Server (যেমন গুগল বা ফেসবুক) থেকে Authorization Code পায়, এবং পরে সেটি Access Token-এ রূপান্তরিত করার জন্য Authorization Server-এ পাঠায়। নিচে এই প্রক্রিয়ার বিস্তারিত ধাপগুলো দেয়া হলো।


Authorization Code Grant Flow - পদক্ষেপ

  1. ব্যবহারকারীকে Authorization Server-এ রিডিরেক্ট করা (Redirect to Authorization Server)
    প্রথমে, Client (অ্যাপ্লিকেশন) ব্যবহারকারীকে Authorization Server-এ রিডিরেক্ট করে। এখানে ব্যবহারকারী তাদের অনুমতি প্রদান করবে যাতে তৃতীয় পক্ষের অ্যাপ্লিকেশনটি তাদের তথ্য অ্যাক্সেস করতে পারে।

    URL উদাহরণ (Authorization Request):

    https://authorization-server.com/oauth/authorize?
        response_type=code&
        client_id=YOUR_CLIENT_ID&
        redirect_uri=YOUR_REDIRECT_URI&
        scope=YOUR_SCOPES&
        state=STATE_PARAMETER
    • response_type=code: এটি নির্দেশ করে যে অ্যাপ্লিকেশনটি Authorization Code প্রাপ্ত করতে চায়।
    • client_id: Client অ্যাপ্লিকেশনের ইউনিক আইডেন্টিফায়ার।
    • redirect_uri: যেখানে Authorization Code পাঠানো হবে।
    • scope: অ্যাপ্লিকেশনের জন্য অনুমোদিত অ্যাক্সেসের স্কোপ।
    • state: এটি একটি সুরক্ষা পরামিতি যা Cross-Site Request Forgery (CSRF) আক্রমণ থেকে সুরক্ষা দেয়।
  2. ব্যবহারকারীর অনুমতি প্রদান (User Grants Permission)
    ব্যবহারকারী Authorization Server-এ লগ ইন করে তাদের তথ্য অ্যাক্সেসের জন্য অনুমতি প্রদান করেন। উদাহরণস্বরূপ, যদি এটি গুগল সাইন-ইন হয়, তাহলে ব্যবহারকারী তাদের গুগল অ্যাকাউন্টের মাধ্যমে লগ ইন করবেন এবং অ্যাপ্লিকেশনটি কোন কোন তথ্য অ্যাক্সেস করতে পারবে তা নির্বাচন করবেন।
  3. Authorization Code এর রিটার্ন (Authorization Code Returned)
    যখন ব্যবহারকারী অনুমতি দেন, তখন Authorization Server তাদেরকে Authorization Code সহ একটি রিডিরেক্ট URL প্রদান করে, যা ক্লায়েন্টের রিডিরেক্ট URI-তে পাঠানো হয়।

    URL উদাহরণ (Redirect with Authorization Code):

    https://your-redirect-uri.com/callback?code=AUTHORIZATION_CODE&state=STATE_PARAMETER
    • code: এটি Authorization Code যা পরবর্তী পদক্ষেপে Access Token-এ রূপান্তরিত হবে।
    • state: এটি সুরক্ষা নিশ্চিত করতে ক্লায়েন্টের দ্বারা পাঠানো পূর্ববর্তী state প্যারামিটার।
  4. Authorization Code Exchange for Access Token (Authorization Code-কে Access Token-এ রূপান্তরিত করা)
    Client (অ্যাপ্লিকেশন) প্রাপ্ত Authorization Code ব্যবহার করে Authorization Server-এ Access Token রিকোয়েস্ট পাঠায়। এখানে client_id, client_secret, এবং redirect_uri প্রদান করা হয় যাতে Authorization Server নিশ্চিত করতে পারে যে আবেদনকারী ক্লায়েন্ট প্রকৃত অ্যাপ্লিকেশন।

    POST Request for Access Token:

    POST https://authorization-server.com/oauth/token
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code&
    code=AUTHORIZATION_CODE&
    redirect_uri=YOUR_REDIRECT_URI&
    client_id=YOUR_CLIENT_ID&
    client_secret=YOUR_CLIENT_SECRET
    • grant_type=authorization_code: এটি নির্দেশ করে যে আমরা Authorization Code ব্যবহার করে Access Token চাই।
    • code: প্রাপ্ত Authorization Code।
    • redirect_uri: রিডিরেক্ট URI যা Authorization Code প্রাপ্তির সময় ব্যবহার করা হয়েছিল।
    • client_id: অ্যাপ্লিকেশনের ইউনিক আইডি।
    • client_secret: ক্লায়েন্টের সিক্রেট কীগুলি, যা ক্লায়েন্টের প্রকৃততা যাচাই করতে ব্যবহৃত হয়।
  5. Access Token প্রাপ্তি (Access Token Received)
    Authorization Server ক্লায়েন্টের আবেদন যাচাই করার পর, এটি Access Token প্রদান করে, যা Client ব্যবহারকারীর রিসোর্স অ্যাক্সেস করার জন্য ব্যবহার করতে পারে। Access Token সাধারণত একটি নির্দিষ্ট সময়ের জন্য বৈধ থাকে।

    Response with Access Token:

    {
        "access_token": "ACCESS_TOKEN",
        "token_type": "bearer",
        "expires_in": 3600,
        "refresh_token": "REFRESH_TOKEN",
        "scope": "YOUR_SCOPES"
    }
    • access_token: এটি ক্লায়েন্টের জন্য প্রদান করা অ্যাক্সেস টোকেন, যা ক্লায়েন্ট রিসোর্স অ্যাক্সেস করতে ব্যবহার করবে।
    • token_type: সাধারণত "bearer" হবে।
    • expires_in: টোকেনের মেয়াদ।
    • refresh_token: যদি প্রদান করা হয়, এটি নতুন অ্যাক্সেস টোকেন প্রাপ্তির জন্য ব্যবহৃত হবে।
  6. ব্যবহারকারী তথ্য অ্যাক্সেস (Accessing User Data)
    এখন, Client (অ্যাপ্লিকেশন) প্রাপ্ত Access Token ব্যবহার করে Resource Server থেকে ব্যবহারকারীর তথ্য অ্যাক্সেস করতে পারে।

    Request to Resource Server:

    GET https://resource-server.com/userinfo
    Authorization: Bearer ACCESS_TOKEN

সারাংশ

  • Authorization Code একটি কোড যা Authorization Server থেকে Client অ্যাপ্লিকেশনে প্রেরণ করা হয়।
  • Client এই Authorization Code ব্যবহার করে Access Token প্রাপ্ত করতে Authorization Server-এ রিকোয়েস্ট পাঠায়।
  • একবার Access Token পাওয়ার পর, Client Resource Server থেকে ব্যবহারকারীর তথ্য বা রিসোর্স অ্যাক্সেস করতে পারে।

এই প্রবাহটি নিরাপদ কারণ Authorization Code এর মাধ্যমে ব্যবহারকারীর পাসওয়ার্ড বা অন্যান্য ব্যক্তিগত তথ্য কখনোই তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলোকে প্রদান করা হয় না।

Content added By
Promotion

Are you sure to start over?

Loading...