شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
چی
خط مشی LDAP ارائه می دهد:
- احراز هویت : اعتبارنامه های کاربر ارائه شده در درخواست در برابر اعتبارنامه های ارائه دهنده LDAP تأیید می شود. خطمشی LDAP انعطافپذیری زیادی با احراز هویت به شما میدهد و به شما امکان میدهد از هر مقدار DN همراه با رمز عبور استفاده کنید، حتی اگر مقدار DN مورد نظر در درخواست نباشد. به عنوان مثال، بگویید که باید از ایمیل / رمز عبور برای احراز هویت استفاده کنید. گزینه های زیر ممکن است:
- اگر ایمیل در درخواست وجود دارد، می توانید به سادگی از آن با رمز عبور برای احراز هویت LDAP استفاده کنید.
- اگر ایمیل در درخواست نیست، اما ویژگی DN دیگری است (مانند شماره تلفن)، میتوانید از شماره تلفن برای دریافت ایمیل مربوطه از LDAP استفاده کنید، سپس از ایمیل / رمز عبور برای احراز هویت استفاده کنید.
- جستجوی نام متمایز (DN) : علاوه بر احراز هویت، میتوانید از خطمشی LDAP برای شناسایی یک ویژگی کاربر در درخواست، مانند ایمیل، استفاده کنید و پرس و جوی انجام دهید که سایر ویژگیهای DN را از LDAP برای آن کاربر بازیابی کند. DN بازیابی شده در یک متغیر ذخیره می شود.
از خطمشی LDAP زمانی استفاده کنید که دسترسی به منابع محافظتشده باید محدود به کاربران ارائهدهنده LDAP شما باشد - مانند کاربران سرپرست، کاربران سازمان و توسعهدهندگان - بهویژه زمانی که دسترسی توکن OAuth غیرضروری یا بسیار سنگین باشد. این خطمشی همچنین برای بازیابی فراداده نام دامنه برای استفاده در جریانهای پروکسی API طراحی شده است.
به عنوان مثال، شما می توانید یک فراخوانی API را تنها زمانی اجرا کنید که یک کاربر با موفقیت در برابر LDAP احراز هویت شود. و سپس به صورت اختیاری ویژگی های DN (نام دامنه) را برای کاربر پس از موفقیت در احراز هویت بازیابی کنید.
برای اطلاعات بیشتر، نگاه کنید به:
- مدیریت خط مشی رمز عبور پیش فرض LDAP برای مدیریت API
- " اطلاعات مهم در مورد خط مشی رمز عبور " در انجمن 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 اضافی را برای آن کاربر با عنصر Attributes بازیابی کند. |
| از یک یا چند عنصر به عنوان مثال، پس از اینکه مقادیر مشخصه، نام ویژگی های 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 و payload زیر استفاده کنید:
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 که خط مشی برای موفقیت یا شکست برمی گرداند در زیر آمده است:
- موفقیت : 200
- شکست : 401
استفاده از یک ارائه دهنده LDAP سفارشی در Edge برای Private Cloud
با استفاده از یک ارائه دهنده 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 . (شاید مجبور باشید کلیک راست کرده و Save As را انتخاب کنید.)
- آن را از حالت فشرده خارج کنید.
- فایل custom-ldap.jar را به محیط خود اضافه کنید و مطمئن شوید که در مسیر کلاس شما قرار دارد.
- یک منبع محیطی برای ارائه دهنده LDAP خود ایجاد کنید. شما از نام منبع محیطی در عنصر
<LdapResource>
خط مشی LDAP استفاده خواهید کرد.
استفاده از UnboundID LDAP SDK برای جاوا
می توانید از UnboundID LDAP SDK با خط مشی LDAP استفاده کنید، اما ابتدا باید نسخه 2.3.1 را دانلود کرده و آن را به هر یک از مسیرهای کلاس پردازشگر پیام خود اضافه کنید.
برای استفاده از UnboundID LDAP SDK با خط مشی LDAP:
- یک مرورگر باز کنید و به مخزن فایل Sourceforge برای UnboundID LDAP SDK بروید:
https://sourceforge.net/projects/ldap-sdk/files/
- نسخه 2.3.1 (SE یا نسخه استاندارد ) SDK را پیدا کنید و فایل ZIP آن نسخه را دانلود کنید. به عنوان مثال، "unboundid-ldapsdk-2.3.1-se.zip" را دانلود کنید.
- همانطور که در مثال زیر نشان داده شده است، فایل JAR را از فایل SDK 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 اجازه دهید تا پردازشگر پیام بتواند به آن دسترسی داشته باشد.
Edge تمام کتابخانه های شخص ثالث را در پوشه
/opt/apigee/edge-gateway/lib/thirdparty
به مسیر کلاس اضافه می کند. - فایل JAR را در
- پردازشگر پیام را مجددا راه اندازی کنید:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
متغیرهای جریان
در زیر متغیرهای خط مشی LDAP هستند که توسط یک SearchQuery
پر شده اند.
متغیر | توضیحات |
---|---|
ldap.policyName.execution.success | پس از اجرای خط مشی، این متغیر جریان بسته به نتیجه دارای مقدار "true" یا "false" است. |
ldap.policyName.search.result[index]. attribute.attrName[index]=value | فرمت انعطاف پذیر این متغیر، به ویژه شاخص: ویژگی های متعدد و همچنین ویژگی هایی با مقادیر متعدد را در نظر می گیرد. Index عددی است که از 1 شروع می شود. اگر شماره شاخص ارائه نشده باشد، عدد شاخص پیش فرض 1 است. اگر خط مشی آدرس، تلفن و ایمیل را برمی گرداند، می توانید اولین ویژگی و مقدار را با استفاده از این متغیرها بازیابی کنید: 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. |