অ্যাক্সেস টোকেন এবং অনুমোদন কোড অনুরোধ

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

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

নমুনা কোড

আপনার সুবিধার জন্য, এই বিষয়ে আলোচনা করা নীতি এবং শেষ পয়েন্টগুলি Apigee api-প্ল্যাটফর্ম-নমুনা সংগ্রহস্থলের oauth-doc-examples প্রকল্পে GitHub-এ উপলব্ধ। আপনি নমুনা কোড স্থাপন করতে পারেন এবং এই বিষয়ে দেখানো নমুনা অনুরোধগুলি চেষ্টা করে দেখতে পারেন। বিস্তারিত জানার জন্য প্রকল্প README দেখুন।

একটি অ্যাক্সেস টোকেন অনুরোধ করা: অনুমোদন কোড অনুদান প্রকার

এই বিভাগটি ব্যাখ্যা করে কিভাবে অনুমোদন কোড অনুদান প্রকার প্রবাহ ব্যবহার করে একটি অ্যাক্সেস টোকেন অনুরোধ করতে হয়। OAuth 2.0 অনুদানের প্রকারগুলির একটি ভূমিকার জন্য, OAuth 2.0 এর ভূমিকা দেখুন।

নমুনা অনুরোধ

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \
   -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \
   -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \
   -d 'code=I9dMGHAN&grant_type=authorization_code&redirect_uri=http://example-callback.com'

প্রয়োজনীয় পরামিতি

ডিফল্টরূপে, এই পরামিতিগুলি অবশ্যই x-www-form-urlencoded এবং অনুরোধের অংশে নির্দিষ্ট করা আবশ্যক (উপরের নমুনায় দেখানো হয়েছে); যাইহোক, OAuthV2 নীতিতে <GrantType> , <Code> , এবং <RedirectUri> উপাদানগুলি কনফিগার করে এই ডিফল্ট পরিবর্তন করা সম্ভব যা এই /accesstoken এন্ডপয়েন্টের সাথে সংযুক্ত। বিস্তারিত জানার জন্য, OAuthV2 নীতি দেখুন।

  • grant_type - মান authorization_code সেট করা আবশ্যক।
  • কোড - /authorize এন্ডপয়েন্ট থেকে প্রাপ্ত অনুমোদনের কোড (বা আপনি যা নাম দিতে চান)। অনুমোদন কোড অনুদান প্রকার প্রবাহে একটি অ্যাক্সেস টোকেন অনুরোধ করতে, আপনাকে প্রথমে একটি অনুমোদন কোড পেতে হবে। নীচের অনুমোদন কোড অনুরোধ দেখুন. অনুমোদন কোড অনুদানের ধরন প্রয়োগ করাও দেখুন।
  • redirect_uri - আপনাকে অবশ্যই এই প্যারামিটারটি প্রদান করতে হবে যদি redirect_uri প্যারামিটারটি পূর্বের অনুমোদন কোড অনুরোধে অন্তর্ভুক্ত করা হয়। যদি redirect_uri প্যারামিটারটি অনুমোদন কোড অনুরোধে অন্তর্ভুক্ত না করা হয় এবং আপনি যদি এই প্যারামিটারটি প্রদান না করেন, তাহলে এই নীতিটি কলব্যাক URL এর মান ব্যবহার করে যা ডেভেলপার অ্যাপটি নিবন্ধিত হওয়ার সময় প্রদান করা হয়েছিল।

ঐচ্ছিক পরামিতি

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

প্রমাণীকরণ

আপনাকে অবশ্যই ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট পাস করতে হবে একটি মৌলিক প্রমাণীকরণ শিরোনাম (বেস64-এনকোডেড) বা ফর্ম প্যারামিটার হিসাবে client_id এবং client_secret । আপনি একটি নিবন্ধিত বিকাশকারী অ্যাপ থেকে এই মানগুলি পান৷ এছাড়াও দেখুন " এনকোডিং মৌলিক প্রমাণীকরণ শংসাপত্র "।

নমুনা শেষ বিন্দু

এখানে একটি অ্যাক্সেস টোকেন তৈরি করার জন্য একটি নমুনা এন্ডপয়েন্ট কনফিগারেশন। এটি GenerateAccessToken নীতি নির্বাহ করবে, যা অনুমোদন_কোড অনুদানের ধরন সমর্থন করার জন্য কনফিগার করা আবশ্যক।

...
       <Flow name="generate-access-token">
            <Description>Generate a token</Description>
            <Request>
                <Step>
                    <Name>GenerateAccessToken</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition>
        </Flow>
...

নমুনা নীতি

এটি একটি মৌলিক GenerateAccessToken নীতি যা authorization_code অনুদানের ধরন গ্রহণ করার জন্য কনফিগার করা হয়েছে। ঐচ্ছিক কনফিগারেশন উপাদান সম্পর্কে তথ্যের জন্য যা আপনি এই নীতির সাথে কনফিগার করতে পারেন, OAuthV2 নীতি দেখুন।

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn>
    <RefreshTokenExpiresIn>86400000</RefreshTokenExpiresIn>
    <SupportedGrantTypes>
      <GrantType>authorization_code</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

রিটার্নস

<GenerateResponse> সক্ষম হলে, নীতিটি একটি JSON প্রতিক্রিয়া প্রদান করে যাতে অ্যাক্সেস টোকেন অন্তর্ভুক্ত থাকে, যেমন নীচে দেখানো হয়েছে। authorization_code অনুদানের ধরন একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন তৈরি করে, তাই একটি প্রতিক্রিয়া এইরকম দেখতে পারে:

{
    "issued_at": "1420262924658",
    "scope": "READ",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "refresh_token_issued_at": "1420262924658",
    "status": "approved",
    "refresh_token_status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799", //--in seconds
    "developer.email": "tesla@weathersample.com",
    "organization_id": "0",
    "token_type": "BearerToken",
    "refresh_token": "fYACGW7OCPtCNDEnRSnqFlEgogboFPMm",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "2l4IQtZXbn5WBJdL6EF7uenOWRsi",
    "organization_name": "docs",
    "refresh_token_expires_in": "86399", //--in seconds
    "refresh_count": "0"
}

যদি <GenerateResponse> মিথ্যাতে সেট করা থাকে, তাহলে নীতি কোনো প্রতিক্রিয়া ফেরত দেয় না। পরিবর্তে, এটি অ্যাক্সেস টোকেন অনুদান সম্পর্কিত ডেটা সহ ফ্লো ভেরিয়েবলের নিম্নলিখিত সেটকে পপুলেট করে।

oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token
oauthv2accesstoken.{policy-name}.refresh_token_expires_in //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token_issued_at
oauthv2accesstoken.{policy-name}.refresh_token_status

যেমন:

oauthv2accesstoken.GenerateAccessToken.access_token
oauthv2accesstoken.GenerateAccessToken.expires_in
oauthv2accesstoken.GenerateAccessToken.refresh_token
oauthv2accesstoken.GenerateAccessToken.refresh_token_expires_in
oauthv2accesstoken.GenerateAccessToken.refresh_token_issued_at
oauthv2accesstoken.GenerateAccessToken.refresh_token_status

একটি অ্যাক্সেস টোকেন অনুরোধ করা: ক্লায়েন্ট শংসাপত্র অনুদান প্রকার

এই বিভাগটি ব্যাখ্যা করে কিভাবে ক্লায়েন্ট শংসাপত্র অনুদান প্রকার প্রবাহ ব্যবহার করে একটি অ্যাক্সেস টোকেন অনুরোধ করতে হয়। OAuth 2.0 অনুদানের প্রকারগুলির একটি ভূমিকার জন্য, OAuth 2.0 এর ভূমিকা দেখুন।

নমুনা অনুরোধ

নিম্নলিখিত কলে মৌলিক প্রমাণীকরণ শিরোনাম এনকোডিং সম্পর্কে তথ্যের জন্য, " মৌলিক প্রমাণীকরণ শংসাপত্র এনকোডিং " দেখুন৷

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Authorization: Basic c3FIOG9vSGV4VHoAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \
  -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \
  -d 'grant_type=client_credentials'

প্রয়োজনীয় পরামিতি

ডিফল্টরূপে, প্রয়োজনীয় grant_type প্যারামিটারটি অবশ্যই x-www-form-urlencoded এবং অনুরোধের অংশে নির্দিষ্ট করা আবশ্যক (উপরের নমুনায় দেখানো হয়েছে); যাইহোক, OAuthV2 নীতিতে <GrantType> উপাদানটি কনফিগার করে এই ডিফল্ট পরিবর্তন করা সম্ভব যা এই /accesstoken এন্ডপয়েন্টের সাথে সংযুক্ত। উদাহরণস্বরূপ, আপনি একটি ক্যোয়ারী প্যারামিটারে প্যারামিটার পাস করতে নির্বাচন করতে পারেন। বিস্তারিত জানার জন্য, OAuthV2 নীতি দেখুন।

  • grant_type - মান client_credentials সেট করা আবশ্যক।

ঐচ্ছিক পরামিতি

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

প্রমাণীকরণ

আপনাকে অবশ্যই ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট পাস করতে হবে একটি মৌলিক প্রমাণীকরণ শিরোনাম (বেস64-এনকোডেড) বা ফর্ম প্যারামিটার হিসাবে client_id এবং client_secret । আপনি অনুরোধের সাথে যুক্ত নিবন্ধিত বিকাশকারী অ্যাপ থেকে এই মানগুলি পান। এছাড়াও দেখুন " এনকোডিং মৌলিক প্রমাণীকরণ শংসাপত্র "।

নমুনা শেষ বিন্দু

এখানে একটি অ্যাক্সেস টোকেন তৈরি করার জন্য একটি নমুনা এন্ডপয়েন্ট কনফিগারেশন। এটি GenerateAccessToken নীতি নির্বাহ করবে, যা ক্লায়েন্ট_ক্রেডেনশিয়াল অনুদানের ধরন সমর্থন করার জন্য কনফিগার করা আবশ্যক।

...
       <Flow name="generate-access-token">
            <Request>
                <Step>
                    <Name>GenerateAccessToken</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition>
        </Flow>
...

নমুনা নীতি

এটি একটি মৌলিক GenerateAccessToken নীতি যা client_credentials অনুদানের ধরন গ্রহণ করার জন্য কনফিগার করা হয়েছে। ঐচ্ছিক কনফিগারেশন উপাদান সম্পর্কে তথ্যের জন্য যা আপনি এই নীতির সাথে কনফিগার করতে পারেন, OAuthV2 নীতি দেখুন।

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <SupportedGrantTypes>
      <GrantType>client_credentials</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

রিটার্নস

<GenerateResponse> সক্ষম হলে, নীতি JSON প্রতিক্রিয়া প্রদান করে। নোট করুন যে client_credentials অনুদান প্রকারের সাথে, রিফ্রেশ টোকেন সমর্থিত নয়। শুধুমাত্র একটি অ্যাক্সেস টোকেন মিন্ট করা হয়. যেমন:

{
    "issued_at": "1420260525643",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "scope": "READ",
    "status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799", //--in seconds
    "developer.email": "tesla@weathersample.com",
    "organization_id": "0",
    "token_type": "BearerToken",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "XkhU2DFnMGIVL2hvsRHLM00hRWav",
    "organization_name": "docs"
}

যদি <GenerateResponse> মিথ্যাতে সেট করা থাকে, তাহলে নীতি কোনো প্রতিক্রিয়া ফেরত দেয় না। পরিবর্তে, এটি অ্যাক্সেস টোকেন অনুদান সম্পর্কিত ডেটা সহ ফ্লো ভেরিয়েবলের নিম্নলিখিত সেটকে পপুলেট করে।

oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in //--in seconds

যেমন:

oauthv2accesstoken.GenerateAccessToken.access_token
oauthv2accesstoken.GenerateAccessToken.expires_in     //--in seconds

একটি অ্যাক্সেস টোকেন অনুরোধ করা হচ্ছে: পাসওয়ার্ড অনুদান প্রকার

এই বিভাগটি ব্যাখ্যা করে কিভাবে সম্পদ মালিকের পাসওয়ার্ড শংসাপত্র (পাসওয়ার্ড) অনুদান প্রকার প্রবাহ ব্যবহার করে একটি অ্যাক্সেস টোকেন অনুরোধ করতে হয়। OAuth 2.0 অনুদানের প্রকারগুলির একটি ভূমিকার জন্য, OAuth 2.0 এর ভূমিকা দেখুন।

পাসওয়ার্ড অনুদানের ধরন সম্পর্কে আরও বিশদ বিবরণের জন্য, একটি 4-মিনিটের ভিডিও সহ এটি কীভাবে বাস্তবায়ন করতে হয়, দেখুন পাসওয়ার্ড অনুদানের প্রকার বাস্তবায়ন করা

নমুনা অনুরোধ

নিম্নলিখিত কলে মৌলিক প্রমাণীকরণ শিরোনাম এনকোডিং সম্পর্কে তথ্যের জন্য, " মৌলিক প্রমাণীকরণ শংসাপত্র এনকোডিং " দেখুন৷

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \
  -X POST https://docs-test.apigee.net/oauth/token \
  -d 'grant_type=password&username=the-user-name&password=the-users-password'

প্রয়োজনীয় পরামিতি

ডিফল্টরূপে, এই পরামিতিগুলি অবশ্যই x-www-form-urlencoded এবং অনুরোধের অংশে নির্দিষ্ট করা আবশ্যক (উপরের নমুনায় দেখানো হয়েছে); যাইহোক, এই /token এন্ডপয়েন্টের সাথে সংযুক্ত OAuthV2 নীতিতে <GrantType> , <Username> , এবং <Password> উপাদানগুলি কনফিগার করে এই ডিফল্ট পরিবর্তন করা সম্ভব। বিস্তারিত জানার জন্য, OAuthV2 নীতি দেখুন।

ব্যবহারকারীর শংসাপত্রগুলি সাধারণত একটি LDAP বা JavaScript নীতি ব্যবহার করে একটি শংসাপত্রের দোকানের বিরুদ্ধে যাচাই করা হয়।

  • grant_type - মান password সেট করা আবশ্যক।
  • ব্যবহারকারীর নাম - সম্পদ মালিকের ব্যবহারকারীর নাম।
  • পাসওয়ার্ড - সম্পদ মালিকের পাসওয়ার্ড।

ঐচ্ছিক পরামিতি

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

প্রমাণীকরণ

আপনাকে অবশ্যই ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট পাস করতে হবে একটি মৌলিক প্রমাণীকরণ শিরোনাম (বেস64-এনকোডেড) বা ফর্ম প্যারামিটার হিসাবে client_id এবং client_secret । আপনি অনুরোধের সাথে যুক্ত নিবন্ধিত বিকাশকারী অ্যাপ থেকে এই মানগুলি পান। এছাড়াও দেখুন " এনকোডিং মৌলিক প্রমাণীকরণ শংসাপত্র "।

নমুনা শেষ বিন্দু

এখানে একটি অ্যাক্সেস টোকেন তৈরি করার জন্য একটি নমুনা এন্ডপয়েন্ট কনফিগারেশন। এটি GenerateAccessToken নীতি নির্বাহ করবে, যা পাসওয়ার্ড অনুদানের ধরন সমর্থন করার জন্য কনফিগার করা আবশ্যক।

...
       <Flow name="generate-access-token">
            <Request>
                <Step>
                    <Name>GenerateAccessToken</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")</Condition>
        </Flow>
...

নমুনা নীতি

এটি একটি মৌলিক GenerateAccessToken নীতি যা পাসওয়ার্ড অনুদানের ধরন গ্রহণ করার জন্য কনফিগার করা হয়েছে। ঐচ্ছিক কনফিগারেশন উপাদান সম্পর্কে তথ্যের জন্য যা আপনি এই নীতির সাথে কনফিগার করতে পারেন, OAuthV2 নীতি দেখুন।

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>28800000</RefreshTokenExpiresIn> <!-- 8 hours -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

রিটার্নস

<GenerateResponse> সক্ষম হলে, নীতি JSON প্রতিক্রিয়া প্রদান করে। নোট করুন যে পাসওয়ার্ড অনুদান প্রকারের সাথে, একটি অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেন উভয়ই মিন্ট করা হয়। যেমন:

{
    "issued_at": "1420258685042",
    "scope": "READ",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "refresh_token_issued_at": "1420258685042",
    "status": "approved",
    "refresh_token_status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799", //--in seconds
    "developer.email": "tesla@weathersample.com",
    "organization_id": "0",
    "token_type": "BearerToken",
    "refresh_token": "IFl7jlijYuexu6XVSSjLMJq8SVXGOAAq",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "I6daIgMSiUgYX1K2qgQWPi37ztS6",
    "organization_name": "docs",
    "refresh_token_expires_in": "28799", //--in seconds
    "refresh_count": "0"
}

যদি <GenerateResponse> মিথ্যাতে সেট করা থাকে, তাহলে নীতি কোনো প্রতিক্রিয়া ফেরত দেয় না। পরিবর্তে, এটি অ্যাক্সেস টোকেন অনুদান সম্পর্কিত ডেটা সহ ফ্লো ভেরিয়েবলের নিম্নলিখিত সেটকে পপুলেট করে।

oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in   //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token
oauthv2accesstoken.{policy-name}.refresh_token_expires_in  //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token_issued_at
oauthv2accesstoken.{policy-name}.refresh_token_status

যেমন:

oauthv2accesstoken.GenerateAccessToken.access_token
oauthv2accesstoken.GenerateAccessToken.expires_in
oauthv2accesstoken.GenerateAccessToken.refresh_token
oauthv2accesstoken.GenerateAccessToken.refresh_token_expires_in
oauthv2accesstoken.GenerateAccessToken.refresh_token_issued_at
oauthv2accesstoken.GenerateAccessToken.refresh_token_status

একটি অ্যাক্সেস টোকেন অনুরোধ করা: অন্তর্নিহিত অনুদান প্রকার

এই বিভাগটি ব্যাখ্যা করে কিভাবে অন্তর্নিহিত অনুদান প্রকার প্রবাহ ব্যবহার করে একটি অ্যাক্সেস টোকেন অনুরোধ করতে হয়। OAuth 2.0 অনুদানের প্রকারগুলির একটি ভূমিকার জন্য, OAuth 2.0 এর ভূমিকা দেখুন।

নমুনা অনুরোধ

$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
  'https://docs-test.apigee.net/oauth/implicit?response_type=token&client_id=ABC123&redirect_uri=http://callback-example.com'

প্রয়োজনীয় পরামিতি

ডিফল্টরূপে, এই পরামিতিগুলি অবশ্যই ক্যোয়ারী প্যারামিটার হতে হবে (উপরের নমুনায় দেখানো হয়েছে); যাইহোক, OAuthV2 নীতিতে <ResponseType> , <ClientId> , এবং <RedirectUri> উপাদানগুলি কনফিগার করে এই ডিফল্ট পরিবর্তন করা সম্ভব যা এই /token এন্ডপয়েন্টের সাথে সংযুক্ত। বিস্তারিত জানার জন্য, OAuthV2 নীতি দেখুন।

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

  • response_type - মান token সেট করা আবশ্যক।
  • client_id - একটি নিবন্ধিত ডেভেলপার অ্যাপের ক্লায়েন্ট আইডি।
  • redirect_uri - এই প্যারামিটারটি বাধ্যতামূলক যদি একটি কলব্যাক URI প্রদান করা না হয় যখন ক্লায়েন্ট ডেভেলপার অ্যাপটি নিবন্ধিত হয়। যদি ক্লায়েন্ট রেজিস্ট্রেশনে একটি কলব্যাক URL প্রদান করা হয়, তবে এটি এই মানের সাথে তুলনা করা হবে এবং অবশ্যই অবশ্যই মিলবে৷

ঐচ্ছিক পরামিতি

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

প্রমাণীকরণ

অন্তর্নিহিত অনুদান মৌলিক প্রমাণীকরণ প্রয়োজন হয় না. আপনাকে একটি অনুরোধ প্যারামিটার হিসাবে একটি ক্লায়েন্ট আইডি পাস করতে হবে, যেমন এখানে ব্যাখ্যা করা হয়েছে।

নমুনা শেষ বিন্দু

এখানে একটি অ্যাক্সেস টোকেন তৈরি করার জন্য একটি নমুনা এন্ডপয়েন্ট কনফিগারেশন। এটি GenerateAccessTokenImplicitGrant নীতি কার্যকর করবে।

...
       <Flow name="generate-access-token-implicit">
            <Request>
                <Step>
                    <Name>GenerateAccessTokenImplicitGrant</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/implicit") and (request.verb = "POST")</Condition>
        </Flow>
...

নমুনা নীতি

এটি একটি মৌলিক GenerateAccessTokenImplicitGrant নীতি যা অন্তর্নিহিত অনুদান প্রকার প্রবাহের জন্য টোকেন অনুরোধগুলি প্রক্রিয়া করে। ঐচ্ছিক কনফিগারেশন উপাদান সম্পর্কে তথ্যের জন্য যা আপনি এই নীতির সাথে কনফিগার করতে পারেন, OAuthV2 নীতি দেখুন।

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OAuthV2 name="GenerateAccessTokenImplicit">
    <DisplayName>GenerateAccessTokenImplicit</DisplayName>
    <Operation>GenerateAccessTokenImplicitGrant</Operation>
    <GenerateResponse enabled="true"/>
</OAuthV2>

রিটার্নস

<GenerateResponse> সক্ষম হলে, নীতিটি প্রতিক্রিয়া শিরোনামে একটি 302 অবস্থান পুনঃনির্দেশ প্রদান করে। পুনঃনির্দেশটি redirect_uri প্যারামিটারে নির্দিষ্ট করা URL-এর দিকে নির্দেশ করে এবং অ্যাক্সেস টোকেন এবং টোকেনের মেয়াদ শেষ হওয়ার সময় যুক্ত করা হয়। মনে রাখবেন যে অন্তর্নিহিত অনুদানের ধরন রিফ্রেশ টোকেন সমর্থন করে না। যেমন:

https://callback-example.com#expires_in=1799&access_token=In4dKm4ueoGZRbIYJhC9yZCmTFw5

যদি <GenerateResponse> মিথ্যাতে সেট করা থাকে, তাহলে নীতি কোনো প্রতিক্রিয়া ফেরত দেয় না। পরিবর্তে, এটি অ্যাক্সেস টোকেন অনুদান সম্পর্কিত ডেটা সহ ফ্লো ভেরিয়েবলের নিম্নলিখিত সেটকে পপুলেট করে।

oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in  //--in seconds

যেমন:

oauthv2accesstoken.GenerateAccessToken.access_token
oauthv2accesstoken.GenerateAccessToken.expires_in   //--in seconds

একটি অনুমোদন কোড অনুরোধ

আপনি যদি অনুমোদন কোড অনুদান প্রকার প্রবাহ ব্যবহার করছেন, আপনি একটি অ্যাক্সেস টোকেন অনুরোধ করার আগে আপনাকে একটি অনুমোদন কোড পেতে হবে।

নমুনা অনুরোধ

$ curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
  'http://myorg-test.apigee.net/oauth/authorize?client_id={consumer_key}&response_type=code'

যেখানে একটি OAuthV2 GenerateAuthorizationCode নীতি /oauth/authorize প্রক্সি এন্ডপয়েন্টে সংযুক্ত থাকে (নীচের নমুনা শেষ পয়েন্টটি দেখুন)।

প্রয়োজনীয় পরামিতি

ডিফল্টরূপে, এই পরামিতিগুলি অবশ্যই ক্যোয়ারী প্যারামিটার হতে হবে (উপরের নমুনায় দেখানো হয়েছে); যাইহোক, OAuthV2 নীতিতে <ResponseType> , <ClientId> , এবং <RedirectUri> উপাদানগুলি কনফিগার করে এই ডিফল্ট পরিবর্তন করা সম্ভব যা এই /authorize এন্ডপয়েন্টের সাথে সংযুক্ত। বিস্তারিত জানার জন্য, OAuthV2 নীতি দেখুন।

  • response_type - মান code সেট করা আবশ্যক।
  • client_id - একটি নিবন্ধিত ডেভেলপার অ্যাপের ক্লায়েন্ট আইডি।

ঐচ্ছিক পরামিতি

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

প্রমাণীকরণ

মৌলিক প্রমাণীকরণের প্রয়োজন নেই, তবে অনুরোধে নিবন্ধিত ক্লায়েন্ট অ্যাপের ক্লায়েন্ট আইডি অবশ্যই সরবরাহ করতে হবে।

নমুনা শেষ বিন্দু

এখানে একটি অনুমোদন কোড তৈরি করার জন্য একটি নমুনা শেষ পয়েন্ট কনফিগারেশন আছে:


<OAuthV2 name="GenerateAuthorizationCode">
  <Operation>GenerateAuthorizationCode</Operation>
    <!--
    ExpiresIn, in milliseconds. The ref is optional. The explicitly specified
    value is the default, when the variable reference cannot be resolved.
        60000 = 1 minute
       120000 = 2 minutes
    -->
  <ExpiresIn>60000</ExpiresIn>
  <GenerateResponse enabled="true"/>
</OAuthV2>

নমুনা নীতি

এটি একটি মৌলিক GenerateAuthorizationCode নীতি। ঐচ্ছিক কনফিগারেশন উপাদান সম্পর্কে তথ্যের জন্য যা আপনি এই নীতির সাথে কনফিগার করতে পারেন, OAuthV2 নীতি দেখুন।

<OAuthV2 name="GenerateAuthorizationCode">
    <Operation>GenerateAuthorizationCode</Operation>
    <GenerateResponse enabled="true"/>
</OAuthV2>

রিটার্নস

<GenerateResponse> সক্ষম হলে, নীতিটি অনুমোদন কোড সংযুক্ত সহ redirect_uri (কলব্যাক URI) অবস্থানে ?code কোয়েরি প্যারামিটার ফেরত দেয়। এটি একটি 302 ব্রাউজার রিডাইরেক্টের মাধ্যমে উত্তরের লোকেশন হেডারে URL সহ পাঠানো হয়। উদাহরণস্বরূপ: ?code=123456

যদি <GenerateResponse> false সেট করা থাকে, তাহলে নীতি কোনো প্রতিক্রিয়া ফেরত দেয় না। পরিবর্তে, এটি অনুমোদন কোড সম্পর্কিত ডেটা সহ ফ্লো ভেরিয়েবলের নিম্নলিখিত সেটকে পপুলেট করে।

oauthv2authcode.{policy-name}.code
oauthv2authcode.{policy-name}.scope
oauthv2authcode.{policy-name}.redirect_uri
oauthv2authcode.{policy-name}.client_id

যেমন:

oauthv2authcode.GenerateAuthorizationCode.code
oauthv2authcode.GenerateAuthorizationCode.scope
oauthv2authcode.GenerateAuthorizationCode.redirect_uri
oauthv2authcode.GenerateAuthorizationCode.client_id

একটি অ্যাক্সেস টোকেন রিফ্রেশ করা হচ্ছে

একটি রিফ্রেশ টোকেন হল একটি শংসাপত্র যা আপনি একটি অ্যাক্সেস টোকেন পেতে ব্যবহার করেন, সাধারণত অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে যাওয়ার পরে বা অবৈধ হয়ে যাওয়ার পরে৷ আপনি যখন একটি অ্যাক্সেস টোকেন পান তখন প্রতিক্রিয়াতে একটি রিফ্রেশ টোকেন ফেরত দেওয়া হয়।

একটি রিফ্রেশ টোকেন ব্যবহার করে একটি নতুন অ্যাক্সেস টোকেন অনুরোধ করতে:

নমুনা অনুরোধ

নিম্নলিখিত কলে মৌলিক প্রমাণীকরণ শিরোনাম এনকোডিং সম্পর্কে তথ্যের জন্য, " মৌলিক প্রমাণীকরণ শংসাপত্র এনকোডিং " দেখুন৷

$ curl -X POST \
  -H "Content-type: application/x-www-form-urlencoded" \
  -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ' \
  https://myorg-test.apigee.net/my_oauth_endpoint/refresh_accesstoken \
  -d 'grant_type=refresh_token&refresh_token=my-refresh-token'

প্রয়োজনীয় পরামিতি

  • grant_type - মান refresh_token সেট করা আবশ্যক।
  • refresh_token - রিফ্রেশ টোকেন আপনি যে অ্যাক্সেস টোকেনটি পুনর্নবীকরণ করতে চান তার সাথে যুক্ত।

ডিফল্টরূপে, নীতি এইগুলিকে অনুরোধের অংশে নির্দিষ্ট করা x-www-form-urlencoded প্যারামিটার হিসাবে দেখায়, যেমন উপরের উদাহরণে দেখানো হয়েছে। এই ইনপুটগুলির জন্য একটি বিকল্প অবস্থান কনফিগার করতে, আপনি OAuthV2 নীতিতে <GrantType> এবং <RefreshToken> উপাদানগুলি ব্যবহার করতে পারেন। বিস্তারিত জানার জন্য, OAuthV2 নীতি দেখুন।

ঐচ্ছিক পরামিতি

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

প্রমাণীকরণ

  • ক্লায়েন্ট_আইডি
  • ক্লায়েন্ট_সিক্রেট

আপনাকে অবশ্যই ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট পাস করতে হবে একটি মৌলিক প্রমাণীকরণ শিরোনাম (বেস64-এনকোডেড) বা ফর্ম প্যারামিটার হিসাবে client_id এবং client_secret । এছাড়াও দেখুন " এনকোডিং মৌলিক প্রমাণীকরণ শংসাপত্র "।

একটি অ্যাক্সেস টোকেন রিফ্রেশ করার সময়, ব্যবহারকারীর কোনো পুনরায় প্রমাণীকরণ নেই।

একটি রিফ্রেশ টোকেন ব্যবহার করে একটি অ্যাক্সেস টোকেন তৈরি করার জন্য এখানে একটি নমুনা এন্ডপয়েন্ট কনফিগারেশন। এটি RefreshAccessToken নীতি কার্যকর করবে।

 ...
       <Flow name="generate-refresh-token">
            <Request>
                <Step>
                    <Name>RefreshAccessToken</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "/refresh") and (request.verb = "POST")</Condition>
       </Flow>
...

নমুনা নীতি

এটি একটি মৌলিক RefreshAccessToken নীতি যা refresh_token অনুদানের ধরন গ্রহণ করার জন্য কনফিগার করা হয়েছে। ঐচ্ছিক কনফিগারেশন উপাদান সম্পর্কে তথ্যের জন্য যা আপনি এই নীতির সাথে কনফিগার করতে পারেন, OAuthV2 নীতি দেখুন।

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OAuthV2 name="RefreshAccessToken">
    <Operation>RefreshAccessToken</Operation>
    <GenerateResponse enabled="true"/>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <RefreshTokenExpiresIn>28800000</RefreshTokenExpiresIn> <!-- 8 hours -->
</OAuthV2>

রিটার্নস

<GenerateResponse> সক্ষম হলে, নীতি নতুন অ্যাক্সেস টোকেন ধারণকারী JSON প্রতিক্রিয়া প্রদান করে। refresh_token অনুদানের ধরন অ্যাক্সেস এবং নতুন রিফ্রেশ টোকেন উভয়ই মিন্টিং সমর্থন করে। যেমন:

{
    "issued_at": "1420301470489",
    "application_name": "ce1e94a2-9c3e-42fa-a2c6-1ee01815476b",
    "scope": "READ",
    "refresh_token_issued_at": "1420301470489",
    "status": "approved",
    "refresh_token_status": "approved",
    "api_product_list": "[PremiumWeatherAPI]",
    "expires_in": "1799", //--in seconds
    "developer.email": "tesla@weathersample.com",
    "token_type": "BearerToken",
    "refresh_token": "8fKDHLryAD9KFBsrpixlq3qPJnG2fdZ5",
    "client_id": "5jUAdGv9pBouF0wOH5keAVI35GBtx3dT",
    "access_token": "jmZ2Hqv3iNsABUtAAsfWR3QGNctw",
    "organization_name": "docs",
    "refresh_token_expires_in": "28799", //--in seconds
    "refresh_count": "2"
}

আপনার জানা উচিত যে একটি নতুন রিফ্রেশ টোকেন মিন্ট করার পরে, আসলটি আর বৈধ থাকে না।

<GenerateResponse> সত্যে সেট করা থাকলে আপনি যা পাবেন তা উপরের প্রতিক্রিয়া। যদি <GenerateResponse> মিথ্যাতে সেট করা থাকে, তাহলে নীতি কোনো প্রতিক্রিয়া ফেরত দেয় না। পরিবর্তে, এটি অ্যাক্সেস টোকেন অনুদানের সাথে সম্পর্কিত ডেটা সহ প্রসঙ্গ (প্রবাহ) ভেরিয়েবলের নিম্নলিখিত সেটকে পপুলেট করে।

oauthv2accesstoken.{policy-name}.access_token
oauthv2accesstoken.{policy-name}.expires_in   //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token
oauthv2accesstoken.{policy-name}.refresh_token_expires_in  //--in seconds
oauthv2accesstoken.{policy-name}.refresh_token_issued_at
oauthv2accesstoken.{policy-name}.refresh_token_status

যেমন:

oauthv2accesstoken.RefreshAccessToken.access_token
oauthv2accesstoken.RefreshAccessToken.expires_in
oauthv2accesstoken.RefreshAccessToken.refresh_token
oauthv2accesstoken.RefreshAccessToken.refresh_token_expires_in
oauthv2accesstoken.RefreshAccessToken.refresh_token_issued_at
oauthv2accesstoken.RefreshAccessToken.refresh_token_status

মৌলিক প্রমাণীকরণ শংসাপত্র এনকোডিং

আপনি যখন একটি টোকেন বা প্রমাণীকরণ কোডের অনুরোধ করার জন্য একটি API কল করেন, এটি একটি ভাল অভ্যাস, এবং OAuth 2.0 স্পেসিফিকেশন দ্বারা একটি HTTP-বেসিক প্রমাণীকরণ শিরোনাম হিসাবে ক্লায়েন্ট_আইডি এবং ক্লায়েন্ট_সিক্রেট মানগুলি পাস করার সুপারিশ করা হয়, যেমনটি IETF RFC 2617 -এ বর্ণিত হয়েছে। এটি করার জন্য, আপনাকে অবশ্যই একটি কোলন আলাদা করে দুটি মান একসাথে যুক্ত করার ফলাফলটি বেস64-এনকোড করতে হবে।

ছদ্ম কোডে:

result = Base64Encode(concat('ns4fQc14Zg4hKFCNaSzArVuwszX95X', ':', 'ZIjFyTsNgQNyxI'))

এই উদাহরণে, ns4fQc14Zg4hKFCNaSzArVuwszX95X হল client_id এবং ZIjFyTsNgQNyxI হল ক্লায়েন্ট সিক্রেট।

বেস64-এনকোডেড মান গণনা করার জন্য আপনি যে প্রোগ্রামিং ভাষা ব্যবহার করুন না কেন, প্রদত্ত ক্লায়েন্ট শংসাপত্রগুলির জন্য, বেস64-এনকোড করা ফলাফল হল: bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==

তারপর, আপনি নিম্নলিখিত হিসাবে টোকেন অনুরোধ করতে পারেন:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Authorization: Basic bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==' \
  -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \
  -d 'grant_type=client_credentials'

curl ইউটিলিটি আসলে আপনার জন্য HTTP বেসিক হেডার তৈরি করবে, যদি আপনি -u বিকল্পটি ব্যবহার করেন। নিম্নলিখিতটি উপরেরটির সমতুল্য:

$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' \
  -u 'ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI' \
  -X POST 'https://docs-test.apigee.net/oauth/accesstoken' \
  -d 'grant_type=client_credentials'

অন্যান্য প্রোগ্রামিং পরিবেশে অনুরূপ শর্টকাট থাকতে পারে যা স্বয়ংক্রিয়ভাবে বেস64-এনকোডেড হেডার তৈরি করে।

ডাটাবেসে হ্যাশিং টোকেন

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

নিম্নলিখিত সংস্থা-স্তরের বৈশিষ্ট্যগুলি OAuth টোকেন হ্যাশিং নিয়ন্ত্রণ করে।

features.isOAuthTokenHashingEnabled = true
features.OAuthTokenHashingAlgorithm = SHA1 | SHA256 | SHA384 | SHA512 | PLAIN

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

features.isOAuthTokenFallbackHashingEnabled = true
features.OAuthTokenFallbackHashingAlgorithm = SHA1 | SHA256 | SHA384 | SHA512 | PLAIN

আপনি যদি একজন এজ ক্লাউড গ্রাহক হন, তাহলে আপনার প্রতিষ্ঠানে এই বৈশিষ্ট্যগুলি সেট করতে এবং ঐচ্ছিকভাবে বিদ্যমান টোকেনগুলিকে বাল্ক হ্যাশ করতে Apigee Edge সহায়তার সাথে যোগাযোগ করুন৷

সম্পর্কিত বিষয়