API কী যাচাইকরণ সেট আপ করা হচ্ছে

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

আপনি 'ভেরিফাই এপিআই কী' (Verify API Key) টাইপের একটি পলিসি সংযুক্ত করে একটি এপিআই-এর জন্য এপিআই কী ভ্যালিডেশন সেট আপ করতে পারেন। একটি 'ভেরিফাই এপিআই কী' পলিসির জন্য একমাত্র প্রয়োজনীয় সেটিং হলো ক্লায়েন্ট রিকোয়েস্টে এপিআই কী-এর প্রত্যাশিত অবস্থান। এপিআই প্রক্সি আপনার নির্দিষ্ট করা অবস্থানটি পরীক্ষা করবে এবং এপিআই কী-টি বের করে নেবে। যদি এপিআই কী-টি প্রত্যাশিত অবস্থানে উপস্থিত না থাকে, তাহলে একটি এরর দেখানো হয় এবং রিকোয়েস্টটি বাতিল করা হয়। এপিআই কী একটি কোয়েরি প্যারামিটার, একটি ফর্ম প্যারামিটার, বা একটি এইচটিটিপি হেডারে থাকতে পারে।

উদাহরণস্বরূপ, নীচের পলিসি কনফিগারেশনটি apikey নামের একটি কোয়েরি প্যারামিটার হিসাবে প্রত্যাশিত কী-এর অবস্থান নির্ধারণ করে। একটি সফল অনুরোধের সাথে অবশ্যই এপিআই কী-টি একটি কোয়েরি প্যারামিটার হিসাবে যুক্ত থাকতে হবে, যেমন, ?apikey=Y7yeiuhcbKJHD790

এপিআই কী যাচাই করতে, নিম্নলিখিত পলিসিটি তৈরি করুন:

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

এই পলিসিটি আপনার সুরক্ষিত করতে প্রয়োজন এমন যেকোনো API-এর সাথে সংযুক্ত করা যেতে পারে।

এই পলিসি প্রকারের বিশদ ডকুমেন্টেশন ' ভেরিফাই এপিআই কী পলিসি' নামক পলিসি রেফারেন্স টপিকে পাওয়া যাবে।

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

<AssignMessage name="StripApiKey">
    <DisplayName>Remove Query Param</DisplayName>
    <Remove>
        <QueryParams>
            <QueryParam name="apikey"/>
        </QueryParams>
    </Remove>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"></AssignTo>
</AssignMessage>

নীতি সংযুক্তি

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

সুরক্ষিত করার জন্য এপিআই প্রক্সির ProxyEndpoint-এ পলিসিগুলো নিম্নরূপভাবে সংযুক্ত করুন:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

পলিসি সংযুক্ত করার পর এপিআই প্রক্সিটি স্থাপন করুন।

বৈধ এপিআই কী দিয়ে অনুরোধ জমা দেওয়া

আপনার প্রতিষ্ঠানের অ্যাডমিন হিসেবে, আপনি নিম্নলিখিত উপায়ে যেকোনো অ্যাপের এপিআই কী (API key) পেতে পারেন:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

এই কলের জন্য যে অ্যাপ প্রোফাইলটি ফেরত আসে, তা কনজিউমার কী (এপিআই কী) এবং সিক্রেট প্রদান করে। কনজিউমার কী ভ্যালুটি হলো সেই মান, যা আপনি সুরক্ষিত এপিআই-তে আপনার অনুরোধে এপিআই কী হিসেবে ব্যবহার করেন।

উদাহরণস্বরূপ, যে অনুরোধে এপিআই কী অন্তর্ভুক্ত থাকে না, তার ফলে অনুমোদন ব্যর্থ হয়।

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

ব্যর্থতার বার্তাটি নির্দেশ করে যে পলিসিটি একটি API কী-এর জন্য পরীক্ষা করেছিল কিন্তু কোনো বৈধ কী খুঁজে পায়নি:

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

যখন অ্যাপটির কনজিউমার কী একটি কোয়েরি প্যারামিটার হিসেবে অন্তর্ভুক্ত করা হয়, তখন প্রত্যাশিত ফলাফল হলো সফল অনুমোদন:

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

প্রত্যাশিত ফলাফল হলো আবহাওয়া দপ্তরের পক্ষ থেকে একটি সফল সাড়া।

অনুরোধে এপিআই কী (API key)-এর মান পরিবর্তন করলে অনুমোদন ব্যর্থ হয়:

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

ফলাফল:

OAuth Failure : Consumer Key is Invalid

মনে রাখবেন, আপনার প্রতিষ্ঠানের অ্যাডমিন হিসেবে, আপনি প্রতিষ্ঠানে নিবন্ধিত যেকোনো অ্যাপের কনজিউমার কী পুনরুদ্ধার করতে পারেন:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password