درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
چه
«خطمشی LDAP» موارد زیر را ارائه میدهد:
- اصالتسنجی: اطلاعات اعتباری کاربر که در درخواست ارائه شده است دربرابر اطلاعات اعتباری در فراهمکننده LDAP تأیید اعتبار میشود. خطمشی LDAP به شما انعطافپذیری زیادی در
اصالتسنجی میدهد و به شما امکان میدهد از هر مقدار DN همراه با گذرواژه استفاده کنید، حتی اگر آن مقدار DN
موردنظر شما در درخواست نباشد. برای مثال، فرض کنید برای اصالتسنجی باید از ایمیل / گذرواژه استفاده کنید. گزینههای زیر امکانپذیر است:
- اگر ایمیل در درخواست باشد، میتوانید بهسادگی از آن همراه با گذرواژه برای اصالتسنجی LDAP استفاده کنید.
- اگر ایمیل در درخواست وجود ندارد، اما مشخصه DN دیگری وجود دارد (مثلاً شماره تلفن)، میتوانید از شماره تلفن برای دریافت ایمیل مربوطه از LDAP استفاده کنید، سپس از ایمیل / گذرواژه برای اصالتسنجی استفاده کنید.
- جستجوی نام متمایز (DN): علاوهبر اصالتسنجی، میتوانید از «خطمشی LDAP» نیز برای شناسایی مشخصه کاربر در درخواست، مثل ایمیل، استفاده کنید و پُرسمانی انجام دهید که مشخصههای DN دیگر را از LDAP برای آن کاربر بازیابی کند. DN بازیابیشده در متغیری ذخیره میشود.
وقتی دسترسی به منابع محافظتشده باید به کاربران ارائهدهنده LDAP شما محدود شود، از «خطمشی LDAP» استفاده کنید—برای مثال، کاربران سرپرست، کاربران سازمان، و توسعهدهندگان—بهویژه وقتی دسترسی به ژتون OAuth یا غیرضروری است یا بیشازحد سنگین است. این خطمشی همچنین برای بازیابی فراداده نام دامنه برای استفاده در جریانهای پراکسی میانای برنامهسازی کاربردی طراحی شده است.
برای مثال، میتوانید فراخوانی API را فقط زمانی اجرا کنید که کاربر دربرابر LDAP باموفقیت اصالتسنجی شود؛ و سپس بهصورت اختیاری، پساز موفقیتآمیز بودن اصالتسنجی، مشخصههای DN (نام دامنه) را برای کاربر بازیابی کنید.
برای اطلاعات بیشتر، به اینجا مراجعه کنید:
- مدیریت خطمشی گذرواژه پیشفرض 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» با ارائهدهنده LDAP سفارشی (ارائهشده توسط Apigee)، کلاس اتصالدهنده LDAP کاملاً واجدشرایط را مشخص کنید.
این کلاسی است که در آن رابط |
|
|
نام محیط منبع LDAP را وارد کنید. برای اطلاعات بیشتر، ایجاد منبع LDAP را ببینید. |
|
|
سطح پایه LDAP که همه دادههای شما در آن وجود دارد. برای مثال، در
ارائهدهنده LDAP در Apigee، همه دادهها تحت
|
|
|
|
|
اصالتسنجی |
|
|
|
عنصر والد برای رفتار اصالتسنجی که پیادهسازی میکنید. |
|
|
عنصر خالی که یکی از مشخصههای زیر را میگیرد:
اگر با نام کاربری اصالتسنجی نمیکنید، یا اگر نام کاربری در درخواست گنجانده نشده است، نیازی نیست این عنصر را اضافه کنید. اگر نام کاربری در درخواست باشد، اما بخواهید کاربری را با مشخصه DN
بهجز نام کاربری، مثل ایمیل، اصالتسنجی کنید، |
|
|
عنصر خالی که یکی از مشخصههای زیر را میگیرد:
|
|
|
اگر میخواهید بااستفاده از مشخصه DN دیگری غیراز نام کاربری، مثلاً ایمیل، اصالتسنجی کنید، خطمشی LDAP را پیکربندی کنید تا مشخصه DN را از درخواست (مثلاً نام کاربری) دریافت کند، که برای شناسایی کاربر در LDAP، بازیابی ایمیل، و اصالتسنجی کاربر استفاده میشود. برای مثال، با فرض اینکه LDAP مشخصه «mail» را برای ذخیره نشانی ایمیل تعریف میکند:
|
|
جستجو |
|
|
|
عنصر والد برای رفتار جستجویی که پیادهسازی میکنید. |
|
|
با شناسایی کاربر با فراداده در درخواست یا پاسخ، میتوانید از این عنصر برای بازیابی
مشخصههای DN اضافی برای کاربر از LDAP استفاده کنید. برای مثال، اگر درخواست حاوی ایمیل کاربر باشد و LDAP شما
دارای مشخصه
این پُرسمان در LDAP بهدنبال ایمیلی میگردد که با ایمیل موجود در درخواست مطابقت داشته باشد، و اکنون خطمشی میتواند با عنصر «مشخصهها»، مشخصههای DN اضافی را برای آن کاربر بازیابی کند. |
|
|
از یک یا چند عنصر برای مثال، پساز اینکه مقادیر مشخصه نامهای مشخصه DN هستند که در LDAP شما تعریف شدهاند. <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
یادداشتهای استفاده
Apigee Edge for Private Cloud به شما امکان میدهد از ارائهدهنده LDAP در فراخوانیهای API استفاده کنید. با «خطمشی LDAP»، برنامهها میتوانند اطلاعات اعتباری را دربرابر کاربران ذخیرهشده در LDAP اصالتسنجی کنند و میتوانید نامهای متمایز (DN) را از LDAP بازیابی کنید—فرادادهها یا مشخصههای مرتبط با هر کاربر، مثل ایمیل، نشانی، و شماره تلفن. DN برگشتی در متغیری برای استفاده بیشتر توسط پراکسی API ذخیره میشود.
ایجاد منبع LDAP
خطمشی LDAP از منبع LDAP که در Apigee Edge ایجاد میکنید استفاده میکند. منبع LDAP اطلاعات اتصال به مخزن LDAP شما را ارائه میدهد.
برای ایجاد و مدیریت منابع LDAP، از API و دادهبار زیر استفاده کنید:
میانای برنامهسازی کاربردی
ایجاد (POST) منبع LDAP یا فهرست کردن (GET) همه منابع LDAP:
/v1/organizations/org_name/environments/environment/ldapresources
دریافت جزئیات (GET)، بهروزرسانی (POST)، و حذف (DELETE) منبع LDAP:
/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
مثال زیر منبع LDAP بهنام ldap1 را ایجاد میکند.
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 آورده شده است که خطمشی برای موفقیت یا عدم موفقیت برمیگرداند:
- موفقیتآمیز: ۲۰۰
- عدم موفقیت: ۴۰۱
استفاده از ارائهدهنده سفارشی LDAP در Edge برای «ابر خصوصی»
استفاده از ارائهدهنده سفارشی LDAP
Apigee Edge for Private Cloud با ارائهدهنده 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 خود، منبع محیط ایجاد کنید. از نام منبع محیط در عنصر
<LdapResource>خطمشی LDAP استفاده خواهید کرد.
استفاده از UnboundID LDAP SDK برای Java
میتوانید از «کیت توسعه نرمافزار UnboundID LDAP» با خطمشی LDAP استفاده کنید، اما ابتدا باید نسخه ۲.۳.۱ را بارگیری کنید و آن را به هریک از مسیرهای کلاس «پردازشگر پیام» اضافه کنید.
برای استفاده از UnboundID LDAP SDK با خطمشی LDAP:
- مرورگری را باز کنید و به مخزن فایل Sourceforge برای UnboundID LDAP SDK پیمایش کنید:
https://sourceforge.net/projects/ldap-sdk/files/
- نسخه ۲.۳.۱ (SE یا نسخه استاندارد) کیت توسعه نرمافزار را پیدا کنید و فایل ZIP برای آن نسخه را بارگیری کنید. برای مثال، «unboundid-ldapsdk-2.3.1-se.zip» را بارگیری کنید.
- فایل JAR را از فایل ZIP کیت توسعه نرمافزار استخراج کنید، همانطور که در مثال زیر نشان داده شده است:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
این فرمان فقط فایل JAR را در پوشه ~/tmp استخراج میکند. ساختار دایرکتوری را با
-jحذف میکند، اگرچه این اختیاری است. - در هر گره «پردازشگر پیام»:
- فایل JAR را در
/opt/apigee/edge-gateway/lib/thirdpartyدایرکتوری «پردازشگر پیام» کپی کنید. - درصورت لزوم، به کاربر Apigee اجازه دهید به فایل JAR دسترسی داشته باشد تا پردازشگر پیام بتواند به آن دسترسی پیدا کند.
- بازراهاندازی «پردازشگر پیام»:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge همه کتابخانههای طرف سوم را در دایرکتوری
/opt/apigee/edge-gateway/lib/thirdpartyبه مسیر کلاس اضافه میکند. - فایل JAR را در
متغیرهای جریان
متغیرهای «خطمشی LDAP» که توسط SearchQuery تکمیل شده است در زیر آمده است.
|
متغیر |
شرح |
|---|---|
ldap.policyName.execution.success |
پساز اجرای خطمشی، این متغیر جریان بسته به نتیجه، مقدار «درست» یا «نادرست» را دربرمیگیرد. |
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. |