خط مشی LDAP

شما در حال مشاهده مستندات 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 name="4GLdapPo>licy<"
   Ld>apRes<ourceldap1/Ld>apRe<source
   Auth>enticati<on
       UserName ref="request.he>ader.use<rname"/
       Password ref=">request.<heade>r.passw<ord&qu>ot;/
   <    Scopesubtree/Scope
   ><    Bas>e<DN ref="apigee.baseDN"/B>aseDN< !-- default is> d<c=api>gee,dc=com --
    /Authentication
 /Ldap

این نمونه، احراز هویت در برابر یک ارائه‌دهنده LDAP را فراهم می‌کند. این خط‌مشی، نام کاربری و رمز عبور را از درخواست برای احراز هویت به LDAP ارسال می‌کند.

احراز هویت ویژگی DN

<Ldap name="LdapPo>licy<"
   Ld>apRes<ourceldap1/Ld>apRe<source
   Auth>enticati<on
       Password ref="request.he>ader.pas<sword">/
       SearchQuerymail={<request.head>er.mail}</Sear>chQuery<
     >  Scopes<ubtree/Scope
       BaseDN>< ref=&q>u<ot;apigee.baseDN"/BaseDN !-- >defau<lt is dc=apigee>,d<c=com> --
    /Authentication
 /Ldap

این خط‌مشی، DN کاربر را به همراه ایمیل موجود در سربرگ درخواست دریافت می‌کند، سپس کاربر را با رمز عبور ارائه شده در سربرگ درخواست، در برابر LDAP احراز هویت می‌کند.

جستجوی LDAP

<Ldap name="LdapPo>licy&<quot;
    !-- using a custom LDAP p>rovid<er --
    LdapConn>ectorClasscom.custom.ldap.<MyProvider/LdapConn>ector<Class
    Ld>apReso<urceMyLdap/Ld>apRes<ource<>/span>
    Searc<h
        BaseDN ref="><;apigee>.<baseDN"/BaseDN !-- default is> dc=apige<e,dc=com -->
        SearchQuerymail={<request.head>er.mail}/<SearchQuer>y
        Att<ributes
 >       <    Attrib>uteaddress/At<tribute
 >     <      Attr>ibutephone/At<tribute
 >     <      Attr>ibutetitl<e/Attribute>
        </Attr><ibutes>
<        Scope/S‘cope !-’- d>efaul<t is su>b<tree >--
    /Search
/Ldap

این خط‌مشی به یک ارائه‌دهنده LDAP سفارشی ارجاع می‌دهد. از آدرس ایمیل موجود در سربرگ درخواست برای شناسایی کاربر استفاده می‌کند، سپس آدرس، تلفن و عنوان کاربر را از LDAP بازیابی می‌کند. ویژگی‌های DN بازیابی شده در یک متغیر ذخیره می‌شوند. به «متغیرهای خاص خط‌مشی» مراجعه کنید.

برای جستجوی LDAP و بازیابی ویژگی‌های DN، درخواست باید شامل اعتبارنامه‌های مدیر باشد.

مرجع عنصر

در ادامه توضیحاتی در مورد عناصر و ویژگی‌های سیاست LDAP آمده است.

عنصر

توضیحات

Ldap

عنصر والد با ویژگی name که می‌توانید نام سیاست را در آن وارد کنید.

LdapConnectorClass

هنگام استفاده از سیاست LDAP با یک ارائه‌دهنده LDAP سفارشی (که توسط Apigee ارائه نشده است)، کلاس رابط LDAP کاملاً واجد شرایط را مشخص کنید. این کلاسی است که رابط ExternalLdapConProvider Apigee را در آن پیاده‌سازی کرده‌اید.

LdapResource

نام محیط منبع LDAP را وارد کنید. برای اطلاعات بیشتر به ایجاد یک منبع LDAP مراجعه کنید.

BaseDN

سطح پایه LDAP که تمام داده‌های شما تحت آن وجود دارند. برای مثال، در ارائه‌دهنده LDAP شرکت Apigee، تمام داده‌ها تحت dc=apigee,dc=com قرار دارند.

  • ref : برای مشخص کردن یک متغیر جریان حاوی مقدار BaseDN، مانند apigee.baseDN، استفاده می‌شود. ref نسبت به یک مقدار BaseDN صریح اولویت دارد. اگر هم ref و هم value را مشخص کنید، ref اولویت دارد. اگر ref در زمان اجرا حل نشود، از value استفاده می‌شود.

Scope

  • شیء : احراز هویت یا جستجو فقط در سطح پایه LDAP رخ می‌دهد.
  • یک سطح : احراز هویت یا جستجو یک سطح پایین‌تر از سطح پایه رخ می‌دهد.
  • زیردرخت (پیش‌فرض): احراز هویت یا جستجو در سطح پایه و به صورت کاملاً بازگشتی زیر پایه رخ می‌دهد.

احراز هویت

Authentication

عنصر والد برای رفتار احراز هویتی که پیاده‌سازی می‌کنید.

UserName

عنصر خالی که یکی از ویژگی‌های زیر را می‌گیرد:

  • ref : ارجاعی به نام کاربری در درخواست، مانند request.header.username
  • مقدار : خود نام کاربری

اگر با نام کاربری احراز هویت نمی‌کنید، یا اگر نام کاربری در درخواست گنجانده نشده است، نیازی به درج این عنصر ندارید.

اگر نام کاربری در درخواست وجود دارد، اما می‌خواهید کاربری را با ویژگی DN دیگری غیر از نام کاربری، مانند ایمیل، احراز هویت کنید، یک SearchQuery برای دریافت ایمیل کاربر مرتبط با رمز عبور وارد کنید. سیاست LDAP از نام کاربری برای جستجوی آدرس ایمیل مربوطه از ارائه‌دهنده LDAP استفاده می‌کند که سپس برای احراز هویت استفاده می‌شود.

Password

عنصر خالی که یکی از ویژگی‌های زیر را می‌گیرد:

  • ref : ارجاعی به رمز عبور در درخواست، مانند request.header.password
  • مقدار : خود رمز عبور رمزگذاری شده

SearchQuery

اگر می‌خواهید با استفاده از یک ویژگی DN غیر از نام کاربری، مانند ایمیل، احراز هویت کنید، سیاست LDAP را طوری پیکربندی کنید که یک ویژگی DN از درخواست (مانند نام کاربری) دریافت کند، که برای شناسایی کاربر در LDAP، بازیابی ایمیل و احراز هویت کاربر استفاده می‌شود.

برای مثال، فرض کنید LDAP یک ویژگی "mail" برای ذخیره آدرس ایمیل تعریف می‌کند:

<SearchQuery>mail={request.header.mail}</SearchQuery>

جستجو

Search

عنصر والد برای رفتار جستجویی که پیاده‌سازی می‌کنید.

SearchQuery

با شناسایی کاربر با استفاده از فراداده در درخواست یا پاسخ، می‌توانید از این عنصر برای بازیابی ویژگی‌های DN اضافی برای کاربر از LDAP استفاده کنید. برای مثال، اگر درخواست شامل ایمیل کاربر باشد و LDAP شما یک ویژگی mail برای ذخیره آدرس‌های ایمیل کاربر تعریف کند، از تنظیم زیر استفاده خواهید کرد:

<SearchQuery>mail={request.header.mail}</SearchQuery>

این پرس‌وجو، LDAP را برای یافتن ایمیلی مطابق با ایمیل موجود در درخواست جستجو می‌کند و اکنون این سیاست می‌تواند ویژگی‌های DN اضافی را برای آن کاربر با عنصر Attributes بازیابی کند.

Attributes

از یک یا چند عنصر <Attribute> برای شناسایی ابرداده DN که می‌خواهید برای کاربر بازیابی کنید، استفاده کنید. حداقل یک ویژگی لازم است.

برای مثال، پس از اینکه SearchQuery کاربر را شناسایی کرد، اکنون این سیاست می‌تواند ویژگی‌های DN کاربر مانند آدرس، شماره تلفن و عنوان کاربر را بازیابی کند، همانطور که در مثال زیر نشان داده شده است.

مقادیر ویژگی، نام‌های ویژگی DN هستند که در LDAP شما تعریف شده‌اند.

<Attributes>
  <Attribute>address</Attribute>
  <Attribute>phone</Attribute>
  <Attribute>title</Attribute>
</Attributes>

یادداشت‌های استفاده

Apigee Edge برای Private Cloud به شما امکان می‌دهد از یک ارائه‌دهنده LDAP در فراخوانی‌های API استفاده کنید. با استفاده از LDAP Policy، برنامه‌ها می‌توانند اعتبارنامه‌های کاربران ذخیره شده در LDAP را احراز هویت کنند و شما می‌توانید نام‌های متمایز (DN) را از LDAP بازیابی کنید - فراداده‌ها یا ویژگی‌های مرتبط با هر کاربر، مانند ایمیل، آدرس و شماره تلفن. DN برگردانده شده در یک متغیر برای استفاده بیشتر توسط پروکسی API ذخیره می‌شود.

ایجاد یک منبع LDAP

سیاست LDAP از یک منبع LDAP که شما در Apigee Edge ایجاد می‌کنید، استفاده می‌کند. یک منبع LDAP اطلاعات اتصال به مخزن LDAP شما را فراهم می‌کند.

برای ایجاد و مدیریت منابع LDAP، از API و payload زیر استفاده کنید:

رابط برنامه‌نویسی کاربردی

ایجاد ( 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="l>dap<1"
  >Conne<ction>
    Ho<sts
      !-- port is optional: defaults to 389 for ldap:// and 636 for l>daps://< --
      Host >port=&q<uot;6>36&qu<ot;foo>.com/<Host
    />Hosts<
    SSLEna>b<ledfalse/SSLEnabled !-- optional, >defau<lts to >f<alse --
> <   Version3/Version !-- optio>nal, <defaults to 3->-
    <Authentications>i<mple/Authentication !-- optional, only> simp<le supported --
  >  ConnectionPr<oviderjndi|unboundi>d</ConnectionProv>ider <!-- required >--
    ServerSetTypesingle|<round robin|fa>i<lover/ServerSetType !-- not ap>plica<ble for jndi --
    !-- If using a custom LDAP provider, the fully> qual<ified class: --
  >  LdapConnectorClasscom.cu<stom.ldap.MyProvide>r/L<dapConnecto>rCl<ass
  /Connection
  Connec>t<Pool enabled="true" !-- enabled is> opti<onal, d>efaul<ts to tr>u<e --
    Timeout30000/Timeout !-- optional, in milliseco>nds; <if not >se<t, no ti>m<eout --
    Maxsize50/Maxsize !-- optional; if >not s<et, no m>ax< connecti>o<ns --
    Prefsize30/Prefsize !-- optiona>l; if< not set><, no pref> <size --
    Initsize/Initsize !-- optional>; if <not set,>< defaults> <to 1 --
    Protocol/Protocol !-- optional; if not s>et,< defaults to> &#<39;ss>l pla<in>' --
  /ConnectPool
  A<dmi>n
   < DNcn=ma>nager,<dc=apigee>,dc<=com/D>N<
    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:passwor<d -d \
  'LdapResourc>e nam<e="ld>ap1&quo<t;
  >  Conne<ctio>n
     < Host>s
     < Hostf>oo.com/<Host
     > /Hos<ts
      SS>LEnable<dfalse/>S<SLEnable>d
     < Version3/Vers>ion
  <    Authenticat>ionsimp<le/Authentication
>      Con<nectionProviderunbo>undid/C<onnectionProv>ider
      <ServerSetTyper>ound <robin/Serve>rSetT<ype
    /Connection
    Co>nnectPo<ol enab>led=&<quot;tru>e"<
      >Ti<meout300>00/Time<out
    >  <Maxsize50>/Maxsiz<e
      ><Prefsize3>0/Prefs<ize
    ><  Initsiz>e/Ini<tsize
      >Proto<col/P>rotocol<
 >   /ConnectPool
    Admin
 <   >  DNcn=<manager,>dc=api<gee,dc=co>m/DN
<      >Pas<swordsecret/P>assword
    /Admin
  /LdapResource'

کدهای پاسخ

کدهای پاسخ HTML که این سیاست در صورت موفقیت یا شکست برمی‌گرداند، به شرح زیر است:

  • موفقیت : ۲۰۰
  • خرابی : ۴۰۱

استفاده از یک ارائه‌دهنده LDAP سفارشی در Edge برای ابر خصوصی

استفاده از یک ارائه‌دهنده LDAP سفارشی

Apigee Edge برای Private Cloud با یک ارائه‌دهنده LDAP ارائه می‌شود که از قبل برای تعامل با LDAP Policy پیکربندی شده است. با این حال، اگر از یک ارائه‌دهنده LDAP سفارشی استفاده می‌کنید، باید آن ارائه‌دهنده را برای پشتیبانی از LDAP Policy فعال کنید. برای انجام این کار:

  1. در کلاس ارائه دهنده 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();
    }
  2. در <LdapConnectorClass> از پیکربندی خط‌مشی (بخش‌های بعدی)، نام کلاس کاملاً واجد شرایط ارائه‌دهنده LDAP سفارشی خود را اضافه کنید.
  3. این فایل را دانلود کنید: custom-ldap.jar_.zip (ممکن است لازم باشد کلیک راست کرده و گزینه Save As را انتخاب کنید.)
  4. آن را از حالت فشرده خارج کنید.
  5. فایل custom-ldap.jar را به محیط خود اضافه کنید و مطمئن شوید که در classpath شما قرار دارد.
  6. یک منبع محیطی برای ارائه‌دهنده LDAP خود ایجاد کنید. شما از نام منبع محیطی در عنصر <LdapResource> از سیاست LDAP استفاده خواهید کرد.

استفاده از کیت توسعه نرم‌افزار UnboundID LDAP برای جاوا

شما می‌توانید از UnboundID LDAP SDK به همراه سیاست LDAP استفاده کنید، اما ابتدا باید نسخه ۲.۳.۱ را دانلود کرده و آن را به هر یک از classpath های پردازنده پیام خود اضافه کنید.

برای استفاده از UnboundID LDAP SDK با سیاست LDAP:

  1. یک مرورگر باز کنید و به مخزن فایل Sourceforge برای UnboundID LDAP SDK بروید:
    https://sourceforge.net/projects/ldap-sdk/files/
  2. نسخه ۲.۳.۱ (SE یا نسخه استاندارد ) از SDK را پیدا کنید و فایل ZIP مربوط به آن نسخه را دانلود کنید. برای مثال، "unboundid-ldapsdk-2.3.1-se.zip" را دانلود کنید.
  3. فایل JAR را از فایل فشرده SDK استخراج کنید، همانطور که در مثال زیر نشان داده شده است:
    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 حذف می‌کند، اگرچه این گزینه اختیاری است.

  4. روی هر گره پردازشگر پیام:
    1. فایل JAR را در دایرکتوری /opt/apigee/edge-gateway/lib/thirdparty پردازنده پیام کپی کنید.
    2. در صورت لزوم، به کاربر Apigee اجازه دسترسی به فایل JAR را بدهید تا پردازشگر پیام بتواند به آن دسترسی داشته باشد.
    3. اج تمام کتابخانه‌های شخص ثالث موجود در دایرکتوری /opt/apigee/edge-gateway/lib/thirdparty را به classpath اضافه می‌کند.

    4. پردازشگر پیام را مجدداً راه‌اندازی کنید:
      /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

قالب انعطاف‌پذیر این متغیر، به ویژه اندیس: چندین ویژگی و همچنین ویژگی‌هایی با چندین مقدار را در بر می‌گیرد. اندیس عددی است که از ۱ شروع می‌شود. اگر هیچ شماره اندیس ارائه نشود، شماره اندیس پیش‌فرض ۱ است.

اگر این خط‌مشی آدرس، تلفن و ایمیل را برمی‌گرداند، می‌توانید اولین ویژگی و مقدار را با استفاده از این متغیرها بازیابی کنید:

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.