سياسة LDAP

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

الأدوات المستخدمة

توفّر سياسة LDAP ما يلي:

  • المصادقة: يتم التحقّق من صحة بيانات اعتماد المستخدم المقدَّمة في الطلب مقارنةً ببيانات الاعتماد في موفّر LDAP. تمنحك سياسة LDAP الكثير من المرونة في ما يتعلق بالمصادقة، ما يتيح لك استخدام أي قيمة اسم مميّز مع كلمة المرور، حتى إذا لم تكن قيمة الاسم المميز التي تريدها مضمّنة في الطلب. على سبيل المثال، لنفترض أنّك بحاجة إلى استخدام عنوان البريد الإلكتروني وكلمة المرور للمصادقة. في ما يلي الخيارات المحتمَلة:
    • إذا كان عنوان البريد الإلكتروني مضمّنًا في الطلب، يمكنك ببساطة استخدامه مع كلمة المرور لإجراء مصادقة LDAP.
    • إذا لم يكن البريد الإلكتروني مضمّنًا في الطلب، ولكن كانت هناك سمة DN أخرى (مثل رقم الهاتف)، يمكنك استخدام رقم الهاتف للحصول على البريد الإلكتروني المقابل من LDAP، ثم استخدام البريد الإلكتروني وكلمة المرور للمصادقة.
  • البحث عن الاسم المميز (DN): بالإضافة إلى المصادقة، يمكنك أيضًا استخدام سياسة LDAP لتحديد سمة مستخدم في الطلب، مثل البريد الإلكتروني، وإجراء طلب بحث يسترد سمات DN أخرى من LDAP لهذا المستخدم. يتم تخزين الاسم المميز الذي تم استرجاعه في متغيّر.

استخدِم سياسة LDAP عندما يجب أن يقتصر الوصول إلى الموارد المحمية على المستخدمين في موفّر LDAP، مثل المستخدمين المشرفين ومستخدمي المؤسسة والمطوّرين، خاصةً عندما يكون الوصول إلى رمز OAuth المميز غير ضروري أو معقّدًا جدًا. تم تصميم السياسة أيضًا لاسترداد البيانات الوصفية لاسم النطاق لاستخدامها في تدفقات خادم وكيل 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 لإجراء المصادقة.

مصادقة سمة الاسم المميز

<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

تحصل هذه السياسة على الاسم المميز للمستخدم مع البريد الإلكتروني في عنوان الطلب، ثم تجري مصادقة للمستخدم باستخدام 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. يتم تخزين سمات الاسم المميز التي تم استردادها في متغيّر. اطّلِع على "المتغيرات الخاصة بالسياسة".

للبحث في LDAP واسترداد سمات الاسم المميز، يجب أن يتضمّن الطلب بيانات اعتماد المشرف.

مرجع العنصر

في ما يلي أوصاف لعناصر وسمات سياسة LDAP.

العنصر

الوصف

Ldap

عنصر رئيسي يتضمّن سمة اسم يمكنك من خلالها إدخال اسم السياسة

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. إذا لم يتم حلّ المرجع في وقت التشغيل، يتم استخدام القيمة.

Scope

  • object: تتم المصادقة أو البحث فقط على مستوى قاعدة بيانات LDAP.
  • onelevel: تتم المصادقة أو البحث على مستوى واحد أسفل المستوى الأساسي.
  • subtree (القيمة التلقائية): تتم المصادقة أو البحث على مستوى القاعدة وبشكل متكرر بالكامل أسفل القاعدة.

المصادقة

Authentication

العنصر الرئيسي لسلوك المصادقة الذي تنفّذه.

UserName

عنصر فارغ يقبل إحدى السمات التالية:

  • ref: مرجع إلى اسم المستخدم في الطلب، مثل request.header.username
  • القيمة: اسم المستخدم نفسه

إذا لم تكن بصدد المصادقة باستخدام اسم المستخدم، أو إذا لم يكن اسم المستخدم مضمّنًا في الطلب، ليس عليك تضمين هذا العنصر.

إذا كان اسم المستخدم مضمّنًا في الطلب، ولكنك تريد مصادقة مستخدم باستخدام سمة DN غير اسم المستخدم، مثل البريد الإلكتروني، أدرِج SearchQuery للحصول على البريد الإلكتروني للمستخدم المرتبط بكلمة المرور. تستخدم سياسة LDAP اسم المستخدم لطلب البحث من موفّر LDAP عن عنوان البريد الإلكتروني المقابل، والذي يُستخدَم بعد ذلك للمصادقة.

Password

عنصر فارغ يقبل إحدى السمات التالية:

  • ref: مرجع إلى كلمة المرور في الطلب، مثل request.header.password
  • value: كلمة المرور المشفّرة نفسها

SearchQuery

إذا أردت إجراء المصادقة باستخدام سمة اسم مميّز غير اسم المستخدم، مثل البريد الإلكتروني، اضبط سياسة LDAP للحصول على سمة اسم مميّز من الطلب (مثل اسم المستخدم)، والتي تُستخدَم لتحديد المستخدم في LDAP، واسترداد البريد الإلكتروني، ومصادقة المستخدم.

على سبيل المثال، بافتراض أنّ LDAP تحدّد السمة "mail" لتخزين عنوان البريد الإلكتروني:

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

بحث

Search

العنصر الرئيسي لسلوك البحث الذي تنفّذه

SearchQuery

من خلال تحديد المستخدم باستخدام البيانات الوصفية في الطلب أو الرد، يمكنك استخدام هذا العنصر لاسترداد سمات DN إضافية للمستخدم من LDAP. على سبيل المثال، إذا كان الطلب يتضمّن البريد الإلكتروني للمستخدم، وكان LDAP يحدّد السمة mail لتخزين عناوين البريد الإلكتروني للمستخدمين، عليك استخدام الإعداد التالي:

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

يبحث طلب البحث هذا في LDAP عن عنوان بريد إلكتروني مطابق للعنوان الوارد في الطلب، ويمكن للسياسة الآن استرداد سمات DN الإضافية لهذا المستخدم باستخدام عنصر السمات.

Attributes

استخدِم عنصرًا واحدًا أو أكثر من عناصر <Attribute> لتحديد بيانات التعريف الخاصة باسم DN التي تريد استردادها للمستخدم. يجب توفير سمة واحدة على الأقل.

على سبيل المثال، بعد أن يحدّد SearchQuery هوية المستخدم، يمكن للسياسة الآن استرداد سمات الاسم المميز (DN) للمستخدم، مثل العنوان ورقم الهاتف ولقب المستخدم، كما هو موضّح في المثال التالي.

قيم السمات هي أسماء سمات الاسم المميز (DN) المحدّدة في LDAP.

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

ملاحظات الاستخدام

تتيح لك Apigee Edge for Private Cloud الاستفادة من موفّر LDAP في طلبات البيانات من واجهة برمجة التطبيقات. باستخدام سياسة LDAP، يمكن للتطبيقات مصادقة بيانات الاعتماد مقابل المستخدمين المخزّنين في LDAP، ويمكنك استرداد الأسماء المميزة (DN) من LDAP، أي البيانات الوصفية أو السمات المرتبطة بكل مستخدم، مثل البريد الإلكتروني والعنوان ورقم الهاتف. يتم تخزين الاسم المميز الذي تم عرضه في متغير لاستخدامه لاحقًا من خلال خادم وكيل لواجهة برمجة التطبيقات.

إنشاء مورد LDAP

تستفيد سياسة LDAP من مورد LDAP الذي تنشئه في Apigee Edge. يوفر مصدر LDAP معلومات الاتصال بمستودع LDAP.

لإنشاء موارد LDAP وإدارتها، استخدِم واجهة برمجة التطبيقات والحِزمة التالية:

واجهة برمجة التطبيقات

إنشاء (POST) مصدر LDAP أو إدراج (GET) جميع مصادر LDAP:

/v1/organizations/org_name/environments/environment/ldapresources

للحصول على تفاصيل حول مصدر LDAP (GET) وتعديله (POST) وحذفه (DELETE)، اتّبِع الخطوات التالية:

/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 التي تعرضها السياسة عند النجاح أو التعذّر:

  • النجاح: 200
  • تعذُّر: 401

استخدام موفّر LDAP مخصّص في Edge for Private Cloud

استخدام موفّر LDAP مخصّص

يتضمّن Apigee Edge للسحابة الإلكترونية الخاصة موفّر LDAP تم إعداده مسبقًا للتفاعل مع سياسة LDAP. ومع ذلك، إذا كنت تستخدم موفِّر LDAP مخصّصًا، عليك تفعيل الموفِّر ليتوافق مع سياسة LDAP. ولإجراء ذلك:

  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. (قد تحتاج إلى النقر بزر الماوس الأيمن واختيار حفظ باسم).
  4. فك ضغط الملف
  5. أضِف ملف custom-ldap.jar إلى بيئتك وتأكَّد من أنّه في مسار الفئة.
  6. أنشئ مرجعًا للبيئة لمزوّد LDAP. ستستخدم اسم مورد البيئة في العنصر <LdapResource> من سياسة LDAP.

استخدام UnboundID LDAP SDK للغة Java

يمكنك استخدام UnboundID LDAP SDK مع سياسة LDAP، ولكن عليك أولاً تنزيل الإصدار 2.3.1 وإضافته إلى كل مسارات الفئات الخاصة بـ "معالج الرسائل".

لاستخدام حزمة UnboundID LDAP SDK مع سياسة LDAP، اتّبِع الخطوات التالية:

  1. افتح متصفّحًا وانتقِل إلى مستودع ملفات Sourceforge لحزمة UnboundID LDAP SDK:
    https://sourceforge.net/projects/ldap-sdk/files/
  2. ابحث عن الإصدار 2.3.1 (SE أو الإصدار العادي) من حزمة تطوير البرامج (SDK) ونزِّل ملف ZIP الخاص بهذا الإصدار. على سبيل المثال، نزِّل الملف "unboundid-ldapsdk-2.3.1-se.zip".
  3. استخرِج ملف JAR من ملف ZIP الخاص بحزمة تطوير البرامج (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. يضيف Edge جميع المكتبات التابعة لجهات خارجية في الدليل /opt/apigee/edge-gateway/lib/thirdparty إلى مسار الفئة.

    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

يتيح التنسيق المرن لهذا المتغيّر، والفهرس على وجه الخصوص، إمكانية استخدام سمات متعددة، بالإضافة إلى سمات تتضمّن قيمًا متعددة. الفهرس هو رقم يبدأ من 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.