আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
কী
LDAP নীতিতে এগুলি বলা আছে:
- অনুমোদন: অনুরোধে দেওয়া ব্যবহারকারীর ক্রেডেনশিয়াল LDAP প্রদানকারীর ক্রেডেনশিয়ালের সাথে
যাচাই করা হয়। LDAP নীতি আপনাকে যাচাইকরণের ক্ষেত্রে অনেক বেশি স্বাধীনতা দেয়। এর ফলে, আপনি পাসওয়ার্ডের সাথে যেকোনও DN ভ্যালু ব্যবহার করতে পারেন, এমনকি সেই DN ভ্যালু
যদি অনুরোধে না থাকে তাহলেও।
যেমন, ধরে নিন যে আপনাকে যাচাইকরণের জন্য ইমেল / পাসওয়ার্ড ব্যবহার করতে হবে।
নিম্নলিখিত বিকল্পগুলি সম্ভব:
- অনুরোধে ইমেল আইডি থাকলে, আপনি LDAP যাচাইকরণের জন্য পাসওয়ার্ডের সাথে সেটি ব্যবহার করতে পারেন।
- অনুরোধে ইমেল না থাকলেও, অন্য কোনও DN অ্যাট্রিবিউট (যেমন ফোন নম্বর) থাকলে, আপনি LDAP থেকে সংশ্লিষ্ট ইমেল আইডি পেতে ফোন নম্বর ব্যবহার করতে পারেন, তারপর ইমেল / পাসওয়ার্ড ব্যবহার করে যাচাই করিয়ে নিতে পারেন।
- স্বতন্ত্র নাম (DN) সার্চ: যাচাইকরণ ছাড়াও, আপনি অনুরোধে ইমেলের মতো ব্যবহারকারীর অ্যাট্রিবিউট শনাক্ত করতে LDAP নীতি ব্যবহার করতে পারেন এবং সেই ব্যবহারকারীর জন্য LDAP থেকে অন্যান্য DN অ্যাট্রিবিউট রিট্রিভ করে এমন কোয়েরি করতে পারেন। রিট্রিভ করা DN হল যা একটি ভেরিয়েবলে স্টোর করা হয়।
সুরক্ষিত রিসোর্সে অ্যাক্সেস আপনার LDAP প্রোভাইডারের ব্যবহারকারীদের মধ্যে সীমাবদ্ধ রাখতে চাইলে LDAP নীতি ব্যবহার করুন—যেমন আপনার অ্যাডমিন ব্যবহারকারী, সংস্থার ব্যবহারকারী এবং ডেভেলপার—বিশেষ করে যখন OAuth টোকেন অ্যাক্সেস হয় অপ্রয়োজনীয় হয় অথবা খুব বেশি ভারী হয়। এছাড়াও, API প্রক্সি ফ্লোতে ব্যবহারের জন্য ডোমেনের নাম সংক্রান্ত মেটাডেটা রিট্রিভ করার জন্য এই নীতি ডিজাইন করা হয়েছে।
যেমন, LDAP-এর মাধ্যমে কোনও ব্যবহারকারী সফলভাবে যাচাই হলে তবেই আপনি API কল এক্সিকিউট করতে পারেন; এবং তারপর যাচাইকরণ সফল হলে, ঐচ্ছিকভাবে ব্যবহারকারীর DN (ডোমেন নেম) অ্যাট্রিবিউট রিট্রিভ করতে পারেন।
অতিরিক্ত তথ্যের জন্য, এগুলি দেখুন:
- API ম্যানেজমেন্টের জন্য ডিফল্ট LDAP পাসওয়ার্ড নীতি ম্যানেজ করা
- "আপনার পাসওয়ার্ড নীতি সম্পর্কে গুরুত্বপূর্ণ তথ্য" যা Apigee কমিউনিটিতে আছে
নমুনা
ইউজারনেম/পাসওয়ার্ড যাচাইকরণ
<Ldap name="4GLdapPolicy">
<LdapResource>ldap1</LdapResource>
<Authentication>
<UserName ref="request.header.username"/>
<Password ref="request.header.password"/>
<Scope>subtree</Scope>
<BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com -->
</Authentication>
</Ldap>এই নমুনা LDAP প্রদানকারীর বিরুদ্ধে যাচাইকরণ প্রদান করে। নীতিটি যাচাইকরণের জন্য LDAP-তে অনুরোধ থেকে ব্যবহারকারীর নাম ও পাসওয়ার্ড পাস করে।
DN অ্যাট্রিবিউট যাচাইকরণ
<Ldap name="LdapPolicy">
<LdapResource>ldap1</LdapResource>
<Authentication>
<Password ref="request.header.password"/>
<SearchQuery>mail={request.header.mail}</SearchQuery>
<Scope>subtree</Scope>
<BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com -->
</Authentication>
</Ldap>এই নীতি অনুরোধের হেডারে ইমেল সহ ব্যবহারকারীর DN পায়, তারপর অনুরোধের হেডারে দেওয়া পাসওয়ার্ডের সাহায্যে LDAP-এর মাধ্যমে ব্যবহারকারীর পরিচয় যাচাই করে।
LDAP সার্চ করা হচ্ছে
<Ldap name="LdapPolicy"> <!-- using a custom LDAP provider --> <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> <LdapResource>MyLdap</LdapResource> <Search> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> <SearchQuery>mail={request.header.mail}</SearchQuery> <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> <Scope></Scope> <!-- default is ‘subtree’ --> </Search> </Ldap>
এই নীতিতে কাস্টম LDAP প্রদানকারীকে রেফার করা হয়েছে। এটি ব্যবহারকারীকে শনাক্ত করতে অনুরোধের হেডারে থাকা ইমেল আইডি ব্যবহার করে, তারপর LDAP থেকে ব্যবহারকারীর ঠিকানা, ফোন নম্বর ও পদমর্যাদা পুনরুদ্ধার করে। রিট্রিভ করা DN অ্যাট্রিবিউট একটি ভেরিয়েবলে স্টোর করা হয়। "নীতি-নির্দিষ্ট ভেরিয়েবল" দেখুন।
LDAP সার্চ করতে এবং DN অ্যাট্রিবিউট পেতে, অনুরোধে অ্যাডমিনিস্ট্রেটরের ক্রেডেনশিয়াল থাকতে হবে।
এলিমেন্ট রেফারেন্স
LDAP নীতির এলিমেন্ট ও অ্যাট্রিবিউট সম্পর্কে নিচে বর্ণনা করা হল।
|
এলিমেন্ট |
বিবরণ |
|---|---|
|
|
নীতিটির নাম লেখার জন্য নাম অ্যাট্রিবিউট সহ পেরেন্ট এলিমেন্ট। |
|
|
কাস্টম LDAP
প্রোভাইডার (Apigee দ্বারা প্রদান করা নয়) সহ LDAP নীতি ব্যবহার করার সময়, সম্পূর্ণ কোয়ালিফায়েড LDAP কানেক্টর ক্লাস নির্দিষ্ট করুন।
এটি সেই ক্লাস যেখানে আপনি Apigee-এর |
|
|
LDAP রিসোর্সের এনভায়রনমেন্টের নাম লিখুন। আরও তথ্যের জন্য LDAP রিসোর্স তৈরি করুন দেখুন। |
|
|
LDAP-এর বেস লেভেল যার অধীনে আপনার সব ডেটা থাকে। যেমন, Apigee-এর LDAP প্রদানকারীতে, সব ডেটা
|
|
|
|
|
যাচাইকরণ |
|
|
|
আপনার প্রয়োগ করা যাচাইকরণ আচরণের মূল এলিমেন্ট। |
|
|
খালি এলিমেন্ট যা নিম্নলিখিত অ্যাট্রিবিউটগুলির মধ্যে একটি নেয়:
আপনি যদি ইউজারনেম দিয়ে যাচাই না করেন অথবা অনুরোধে ইউজারনেম অন্তর্ভুক্ত না থাকে, তাহলে আপনাকে এই এলিমেন্ট যোগ করতে হবে না। অনুরোধে ইউজারনেম থাকলে, কিন্তু আপনি ইউজারনেম ছাড়া অন্য কোনও DN অ্যাট্রিবিউট
যেমন ইমেল দিয়ে কোনও ব্যবহারকারীকে যাচাই করতে চাইলে, পাসওয়ার্ডের সাথে যুক্ত
ব্যবহারকারীর ইমেল পেতে |
|
|
খালি এলিমেন্ট যা নিম্নলিখিত অ্যাট্রিবিউটগুলির মধ্যে একটি নেয়:
|
|
|
আপনি যদি ইউজারনেম ছাড়া অন্য কোনও DN অ্যাট্রিবিউট, যেমন ইমেল ব্যবহার করে যাচাই করতে চান, তাহলে অনুরোধ থেকে DN অ্যাট্রিবিউট (যেমন ইউজারনেম) পেতে LDAP নীতি কনফিগার করুন, যা LDAP-তে ব্যবহারকারীকে শনাক্ত করতে, ইমেল আইডি পেতে এবং ব্যবহারকারীকে যাচাই করতে ব্যবহার করা হয়। যেমন, ধরে নিন যে LDAP, ইমেল আইডি সেভ করার জন্য "mail" অ্যাট্রিবিউট নির্ধারণ করে:
|
|
সার্চ করুন |
|
|
|
আপনার প্রয়োগ করা সার্চ আচরণের মূল এলিমেন্ট। |
|
|
অনুরোধ বা উত্তরে মেটাডেটা সহ ব্যবহারকারীকে শনাক্ত করার মাধ্যমে, আপনি LDAP থেকে ব্যবহারকারীর জন্য অতিরিক্ত DN অ্যাট্রিবিউট
রিট্রিভ করতে এই এলিমেন্ট ব্যবহার করতে পারবেন। যেমন, যদি
অনুরোধে ব্যবহারকারীর ইমেল থাকে এবং আপনার LDAP যদি ব্যবহারকারীর ইমেল আইডি
স্টোর করার জন্য
এই কোয়েরি অনুরোধে থাকা ইমেলের সাথে ম্যাচ করা ইমেলের জন্য LDAP সার্চ করে এবং নীতি এখন Attributes এলিমেন্টের মাধ্যমে সেই ব্যবহারকারীর জন্য অতিরিক্ত DN অ্যাট্রিবিউট রিট্রিভ করতে পারে। |
|
|
ব্যবহারকারীর জন্য আপনি যে DN মেটাডেটা পেতে চান তা শনাক্ত করতে
এক বা একাধিক যেমন, অ্যাট্রিবিউট ভ্যালু হল আপনার LDAP-তে সংজ্ঞায়িত DN অ্যাট্রিবিউট নাম। <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
ব্যবহার সংক্রান্ত নোট
প্রাইভেট ক্লাউডের জন্য Apigee Edge আপনাকে API কলে LDAP প্রদানকারীকে ব্যবহার করতে দেয়। LDAP নীতি অনুযায়ী, অ্যাপ্লিকেশন LDAP-এ সেভ করা ব্যবহারকারীদের বিরুদ্ধে ক্রেডেনশিয়াল যাচাই করতে পারে এবং আপনি LDAP থেকে বিশিষ্ট নাম (DN) পেতে পারেন—মেটাডেটা বা অ্যাট্রিবিউট যা প্রতিটি ব্যবহারকারীর সাথে যুক্ত থাকে, যেমন ইমেল, ঠিকানা ও ফোন নম্বর। API প্রক্সি দ্বারা আরও ব্যবহারের জন্য রিটার্ন করা DN একটি ভেরিয়েবলে স্টোর করা হয়।
LDAP রিসোর্স তৈরি করা
LDAP নীতি Apigee Edge-এ আপনার তৈরি করা LDAP রিসোর্স ব্যবহার করে। LDAP রিসোর্স আপনার LDAP রিপোজিটরিতে কানেকশন সংক্রান্ত তথ্য প্রদান করে।
LDAP রিসোর্স তৈরি ও ম্যানেজ করতে, নিম্নলিখিত API ও পেলোড ব্যবহার করুন:
API
LDAP রিসোর্স তৈরি (POST) করুন অথবা সব LDAP রিসোর্সের তালিকা (GET) দেখুন:
/v1/organizations/org_name/environments/environment/ldapresources
LDAP রিসোর্সের (GET) বিবরণ পান, (POST) আপডেট করুন এবং (DELETE) মুছে দিন:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
পেলোড
ব্যবহার সংক্রান্ত কমেন্ট সহ XML পেলোডের নমুনা নিচে দেওয়া হল।
<LdapResource name="ldap1"> <Connection> <Hosts> <!-- port is optional: defaults to 389 for ldap:// and 636 for ldaps:// --> <Host port="636">foo.com</Host> </Hosts> <SSLEnabled>false</SSLEnabled> <!-- optional, defaults to false --> <Version>3</Version> <!-- optional, defaults to 3--> <Authentication>simple</Authentication> <!-- optional, only simple supported --> <ConnectionProvider>jndi|unboundid</ConnectionProvider> <!-- required --> <ServerSetType>single|round robin|failover</ServerSetType> <!-- not applicable for jndi --> <!-- If using a custom LDAP provider, the fully qualified class: --> <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> </Connection> <ConnectPool enabled="true"> <!-- enabled is optional, defaults to true --> <Timeout>30000</Timeout> <!-- optional, in milliseconds; if not set, no timeout --> <Maxsize>50</Maxsize> <!-- optional; if not set, no max connections --> <Prefsize>30</Prefsize> <!-- optional; if not set, no pref size --> <Initsize></Initsize> <!-- optional; if not set, defaults to 1 --> <Protocol></Protocol> <!-- optional; if not set, defaults to 'ssl plain' --> </ConnectPool> <Admin> <DN>cn=manager,dc=apigee,dc=com</DN> <Password>secret</Password> </Admin> </LdapResource>
curl উদাহরণ: LDAP রিসোর্স তৈরি করা
নিচে দেওয়া উদাহরণে ldap1 নামের একটি LDAP রিসোর্স তৈরি করা হয়েছে।
curl -X POST -H "Content-Type: application/xml" \ https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources \ -u apigee_email:password -d \ '<LdapResource name="ldap1"> <Connection> <Hosts> <Host>foo.com</Host> </Hosts> <SSLEnabled>false</SSLEnabled> <Version>3</Version> <Authentication>simple</Authentication> <ConnectionProvider>unboundid</ConnectionProvider> <ServerSetType>round robin</ServerSetType> </Connection> <ConnectPool enabled="true"> <Timeout>30000</Timeout> <Maxsize>50</Maxsize> <Prefsize>30</Prefsize> <Initsize></Initsize> <Protocol></Protocol> </ConnectPool> <Admin> <DN>cn=manager,dc=apigee,dc=com</DN> <Password>secret</Password> </Admin> </LdapResource>'
রেসপন্স কোড
সফল বা ব্যর্থ হলে নীতি নিম্নলিখিত HTML রেসপন্স কোড রিটার্ন করে:
- সফল: 200
- কাজ হয়নি: 401
প্রাইভেট ক্লাউডের জন্য Edge-এ কাস্টম LDAP প্রদানকারী ব্যবহার করা
কাস্টম LDAP পরিষেবা প্রদানকারী ব্যবহার করা
প্রাইভেট ক্লাউডের জন্য Apigee Edge-এ একটি LDAP প্রদানকারী থাকে যা LDAP নীতির সাথে ইন্টার্যাক্ট করার জন্য আগে থেকেই কনফিগার করা থাকে। তবে, আপনি কাস্টম LDAP পরিষেবা প্রদানকারী ব্যবহার করলে, আপনাকে অবশ্যই LDAP নীতি মেনে চলার জন্য পরিষেবা প্রদানকারীকে চালু করতে হবে। এটি করতে:
- আপনার LDAP প্রদানকারী ক্লাসে,
ExternalLdapConProviderইন্টারফেস প্রয়োগ করুন।public interface ExternalLdapConProvider { void doAuthentication(LdapBean LlapBean, String userDN, String password, String baseDN); void doSearchAndAuthentication(LdapBean LlapBean, String password, String baseDN, String query, int scope); Collection<Map<String, String[]>> doSearch(LdapBean LlapBean, String query, String baseDN, Collection<String> requiredAttributes, int scope); void closeConnections(); } - নীতি কনফিগারেশনের
<LdapConnectorClass>-এ (পরবর্তী বিভাগ), আপনার কাস্টম LDAP প্রোভাইডারের সম্পূর্ণ কোয়ালিফায়েড ক্লাস নেম যোগ করুন। - এই ফাইলটি ডাউনলোড করুন: custom-ldap.jar_.zip. (আপনাকে হয়ত ডানদিকের বোতামে ক্লিক করে এই হিসেবে সেভ করুন বিকল্প বেছে নিতে হবে।)
- এটি আনজিপ করুন।
- আপনার এনভায়রনমেন্টে custom-ldap.jar ফাইল যোগ করুন এবং নিশ্চিত করুন যে এটি আপনার ক্লাসপাথে আছে।
- আপনার LDAP প্রদানকারীর জন্য এনভায়রনমেন্ট রিসোর্স তৈরি করুন। আপনি LDAP নীতির
<LdapResource>এলিমেন্টে এনভায়রনমেন্ট রিসোর্স নাম ব্যবহার করবেন।
Java-র জন্য UnboundID LDAP SDK ব্যবহার করা
আপনি LDAP নীতির সাথে UnboundID LDAP SDK ব্যবহার করতে পারবেন, তবে আপনাকে প্রথমে ভার্সন 2.3.1 ডাউনলোড করে প্রতিটি মেসেজ প্রসেসরের ক্লাসপাথে যোগ করতে হবে।
LDAP নীতির সাথে UnboundID LDAP SDK ব্যবহার করতে:
- ব্রাউজার খুলুন এবং UnboundID LDAP SDK-এর জন্য Sourceforge ফাইল রিপোজিটরিতে নেভিগেট করুন:
https://sourceforge.net/projects/ldap-sdk/files/
- SDK-এর 2.3.1 (SE বা Standard Edition) ভার্সন খুঁজে নিন এবং সেই ভার্সনের জন্য ZIP ফাইল ডাউনলোড করুন। যেমন, "unboundid-ldapsdk-2.3.1-se.zip" ডাউনলোড করুন।
- SDK জিপ ফাইল থেকে JAR ফাইল এক্সট্র্যাক্ট করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
এই কমান্ডটি ~/tmp ডিরেক্টরিতে শুধুমাত্র JAR ফাইল এক্সট্র্যাক্ট করে। এটি
-j-এর সাথে ডিরেক্টরি স্ট্রাকচার ড্রপ করে, যদিও এটি ঐচ্ছিক। - প্রতিটি মেসেজ প্রসেসর নোডে:
- Message Processor-এর
/opt/apigee/edge-gateway/lib/thirdpartyডিরেক্টরিতে JAR ফাইল কপি করুন। - প্রয়োজন হলে, JAR ফাইলে Apigee ব্যবহারকারীকে অনুমতি দিন যাতে মেসেজ প্রসেসর এটি অ্যাক্সেস করতে পারে।
- মেসেজ প্রসেসর রিস্টার্ট করুন:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge, classpath-এ
/opt/apigee/edge-gateway/lib/thirdpartyডিরেক্টরির মধ্যে থাকা সব থার্ড-পার্টি লাইব্রেরি যোগ করে। - Message Processor-এর
ফ্লো ভেরিয়েবল
SearchQuery-এর মাধ্যমে পূরণ করা LDAP নীতি ভেরিয়েবলগুলি নিচে উল্লেখ করা হল।
|
ভেরিয়েবেল |
বিবরণ |
|---|---|
ldap.policyName.execution.success |
নীতি প্রয়োগ করার পরে, এই ফ্লো ভেরিয়েবলে ফলাফল অনুযায়ী "true" বা "false" ভ্যালু থাকে, । |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
এই ভেরিয়েবলের নমনীয় ফর্ম্যাট, বিশেষ করে ইন্ডেক্স: একাধিক অ্যাট্রিবিউট এবং একাধিক ভ্যালু সহ অ্যাট্রিবিউটকে অ্যাকাউন্ট করে। ইনডেক্স হল একটি সংখ্যা যা ১ থেকে শুরু হয়। কোনও ইন্ডেক্স নম্বর দেওয়া না থাকলে, ডিফল্ট ইন্ডেক্স নম্বর ১ হয়। নীতিতে যদি ঠিকানা, ফোন নম্বর ও ইমেল আইডি থাকে, তাহলে আপনি এইসব ভেরিয়েবল ব্যবহার করে প্রথম অ্যাট্রিবিউট ও ভ্যালু রিট্রিভ করতে পারবেন: ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email আপনি যদি সার্চ ফলাফলে তৃতীয় ঠিকানা অ্যাট্রিবিউটটি পেতে চান, তাহলে এটি ব্যবহার করতে হবে: ldap.policyName.search.result[3].attribute.address কোনও অ্যাট্রিবিউটের একাধিক ভ্যালু থাকলে (যেমন, কোনও ব্যবহারকারীর একাধিক ইমেল আইডি থাকলে), আপনি ফলাফল থেকে দ্বিতীয় ইমেল আইডিটি এইভাবে পাবেন: ldap.policyName.search.result.attribute.mail[2] |
সমস্যার কোড
Edge নীতি থেকে ফেরত আসা সমস্যার কোড সমস্যার কোড রেফারেন্স-এ বর্ণিত একটি সামঞ্জস্যপূর্ণ ফর্ম্যাট অনুসরণ করে।
এই নীতি নিম্নলিখিত ত্রুটি কোড ব্যবহার করে:
| ভুল সংকেত | বার্তা |
|---|---|
InvalidAttributeName | Invalid attribute name {0}. |
InvalidSearchBase | Search base can not be empty. |
InvalidValueForPassword | Invalid value for password field. It can not be empty. |
InvalidSearchScope | Invalid scope {0}. Allowed scopes are {1}. |
InvalidUserCredentials | Invalid user credentials. |
InvalidExternalLdapReference | Invalid external ldap reference {0}. |
LdapResourceNotFound | Ldap resource {0} not found. |
BaseDNRequired | Base DN required. |
OnlyReferenceOrValueIsAllowed | Only value or reference is allowed for {0}. |
AttributesRequired | At least one attribute required for search action. |
UserNameIsNull | User name is null. |
SearchQueryAndUserNameCannotBePresent | Both search query and username can not be present in the authentication action. Please specify either one of them. |