অ্যান্টিপ্যাটার্ন: OAuth টোকেনগুলির জন্য কোনও মেয়াদ শেষ হওয়ার সময় সেট করুন না, অ্যান্টিপ্যাটার্ন: OAuth টোকেনের জন্য কোনও মেয়াদ শেষ হওয়ার সময় সেট করুন না

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

Apigee Edge এপিআই সুরক্ষিত করার জন্য OAuth 2.0 ফ্রেমওয়ার্ক প্রদান করে। OAuth2 হলো অন্যতম জনপ্রিয় একটি ওপেন-স্ট্যান্ডার্ড, টোকেন-ভিত্তিক অথেনটিকেশন এবং অথরাইজেশন স্কিম। এটি ক্লায়েন্ট অ্যাপ্লিকেশনগুলোকে ব্যবহারকারীদের ইউজারনেম এবং পাসওয়ার্ড প্রকাশ করার প্রয়োজন ছাড়াই তাদের পক্ষ থেকে এপিআই অ্যাক্সেস করতে সক্ষম করে।

Apigee Edge ডেভেলপারদের OAuthv2 পলিসি ব্যবহার করে চারটি OAuth2 গ্রান্ট টাইপের ( ক্লায়েন্ট ক্রেডেনশিয়াল , পাসওয়ার্ড , ইমপ্লিসিট এবং অথরাইজেশন কোড) যেকোনো একটি প্রয়োগ করার মাধ্যমে অ্যাক্সেস এবং/অথবা রিফ্রেশ টোকেন তৈরি করার সুযোগ দেয়। ক্লায়েন্ট অ্যাপ্লিকেশনগুলো সুরক্ষিত এপিআই ব্যবহার করার জন্য অ্যাক্সেস টোকেন ব্যবহার করে। প্রতিটি অ্যাক্সেস টোকেনের নিজস্ব মেয়াদ শেষ হওয়ার সময় থাকে, যা OAuthv2 পলিসিতে সেট করা যেতে পারে।

কিছু নির্দিষ্ট গ্রান্ট টাইপের ক্ষেত্রে, অ্যাক্সেস টোকেনের সাথে ঐচ্ছিকভাবে রিফ্রেশ টোকেনও ইস্যু করা হয়। মূল অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেলে বা তা বাতিল হয়ে গেলে, নতুন ও বৈধ অ্যাক্সেস টোকেন পাওয়ার জন্য রিফ্রেশ টোকেন ব্যবহার করা হয়। রিফ্রেশ টোকেনের মেয়াদ শেষ হওয়ার সময় OAuthv2 পলিসিতেও নির্ধারণ করা যায়।

এই অ্যান্টিপ্যাটার্নটি OAuth টোকেনের মেয়াদ দীর্ঘ করার অ্যান্টিপ্যাটার্নের সাথে সম্পর্কিত।

অ্যান্টিপ্যাটার্ন

OAuthv2 পলিসিতে রিফ্রেশ টোকেনের জন্য কোনো মেয়াদ শেষ হওয়ার সময় নির্ধারণ না করলে ক্যাসান্ড্রা নোডগুলিতে OAuth টোকেন জমা হতে থাকে এবং ডিস্ক স্পেসের ব্যবহার বেড়ে যায়।

নিম্নলিখিত উদাহরণ OAuthV2 পলিসিতে <RefreshTokenExpiresIn> এর জন্য একটি অনুপস্থিত কনফিগারেশন দেখা যাচ্ছে:

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

উপরের উদাহরণে:

  • অ্যাক্সেস টোকেনটির মেয়াদ তুলনামূলকভাবে কম, মাত্র ৩০ মিনিট নির্ধারণ করা হয়েছে।
  • রিফ্রেশ টোকেনের মেয়াদ শেষ হওয়ার তারিখ নির্ধারণ করা হয়নি।
  • রিফ্রেশ টোকেন ডেটা স্টোরে (ক্যাসান্ড্রা) চিরস্থায়ীভাবে থেকে যায়, যার ফলে ডেটা জমা হতে থাকে।
  • মেয়াদবিহীনভাবে তৈরি করা একটি রিফ্রেশ টোকেন অনির্দিষ্টকালের জন্য অ্যাক্সেস টোকেন তৈরি করতে ব্যবহার করা যেতে পারে।
  • এই এপিআই-তে প্রতি সেকেন্ডে ১০টি রিকোয়েস্ট এলে, এটি একদিনে ৮৬৪,০০০টি পর্যন্ত টোকেন তৈরি করতে পারে।

প্রভাব

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

সর্বোত্তম অনুশীলন

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

বিশেষত এজ ফর প্রাইভেট ক্লাউড গ্রাহকদের জন্য সর্বোত্তম অনুশীলন

এই বিভাগে বিশেষভাবে Edge for Private Cloud গ্রাহকদের জন্য সর্বোত্তম অনুশীলনগুলো বর্ণনা করা হয়েছে।

ডিফল্ট রিফ্রেশ টোকেন মেয়াদ শেষ হওয়ার তারিখ নির্দিষ্ট করুন।

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

  1. একটি মেসেজ প্রসেসর নোডে, $APIGEE_ROOT/customer/application/message-processor.properties কনফিগারেশন ওভাররাইড ফাইলটি সম্পাদনা বা তৈরি করুন। নিশ্চিত করুন যে এই ফাইলটি apigee ব্যবহারকারীর দ্বারা পঠনযোগ্য।
  2. ফাইলটিতে নিম্নলিখিত লাইনটি যোগ করুন:
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
    যদি কোনো পলিসিতে রিফ্রেশ টোকেনের মেয়াদ নির্দিষ্ট করা না থাকে, তবে এটি ডিফল্ট মেয়াদ ১ ঘণ্টা নির্ধারণ করবে। আপনি আপনার ব্যবসায়িক প্রয়োজন অনুযায়ী এই ডিফল্ট মানটি পরিবর্তন করতে পারেন।
  3. মেসেজ প্রসেসর সার্ভিসটি পুনরায় চালু করুন:
    apigee-service edge-message-processor restart
  4. উপরের ধাপগুলো সমস্ত মেসেজ প্রসেসর নোডে এক এক করে পুনরাবৃত্তি করুন।

ক্যাসান্ড্রাতে সর্বোত্তম অনুশীলন

সর্বজনীনভাবে উপলব্ধ Apigee-এর সর্বশেষ সংস্করণে আপগ্রেড করার চেষ্টা করুন। Apigee ক্রমাগত বিভিন্ন ফিক্স এবং এনহ্যান্সমেন্ট প্রকাশ করে চলেছে, যা এর অভ্যন্তরে টোকেন ব্যবস্থাপনাকে উন্নত ও অপ্টিমাইজ করে। Apigee-তে, অ্যাক্সেস এবং রিফ্রেশ টোকেনগুলি Cassandra-এর “kms” কীস্পেসের মধ্যে সংরক্ষিত থাকে। আপনাকে নিশ্চিত করতে হবে যে এই কীস্পেসের কম্প্যাকশন স্ট্র্যাটেজিটি LeveledCompactionStrategy তে সেট করা আছে। আপনাকে পরীক্ষা করে দেখতে হবে যে নিম্নলিখিত ইনডেক্সগুলি উপস্থিত নেই :
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx #f0f0f0 এবং
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx

টোকেন মুছে ফেলার কারণে তৈরি হওয়া টুম্বস্টোনগুলো ডেটা স্টোর থেকে দ্রুত অপসারণ নিশ্চিত করতে, আপনি kms.oauth_20_access_tokens টেবিলে gc_grace_seconds এর ডিফল্ট ১০ দিনের মান কমিয়ে (যেমন ৩ দিন) একটি নিম্নতর মানও নির্ধারণ করতে পারেন।

আরও পড়ুন