سياسة LDAP

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

الموضوع

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

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

يمكنك استخدام "سياسة LDAP" عندما يكون الوصول إلى الموارد المحمية محصورًا على المستخدمين في موفّر خدمة LDAP، مثل المستخدمين المشرفين ومستخدمي المؤسسة والمطوّرين، وخاصةً عندما يكون الوصول إلى رمز OAuth المميّز غير ضروري أو ثقيل جدًا. وتم تصميم السياسة أيضًا لاسترداد البيانات الوصفية لاسم النطاق من أجل استخدامها في تدفقات الخادم الوكيل لواجهة برمجة التطبيقات.

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

للحصول على معلومات إضافية، راجع:

عيّنات

مصادقة اسم المستخدم/كلمة المرور

<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 للمصادقة.

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

<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>

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

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

Scope

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

المصادقة

Authentication

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

UserName

عنصر فارغ يأخذ إحدى السمات التالية:

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

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

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

Password

عنصر فارغ يأخذ إحدى السمات التالية:

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

SearchQuery

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

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

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

بحث

Search

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

SearchQuery

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

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

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

Attributes

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

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

قيم السمات هي أسماء سمات الاسم المميز التي تم تحديدها في LDAP.

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

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

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

إنشاء مورد 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 التي تعرضها السياسة للنجاح أو الإخفاق:

  • نجاح: 200
  • الخطأ: 401

استخدام موفّر خدمة LDAP مخصَّص في Edge لـ Private Cloud

باستخدام موفّر خدمة LDAP

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

  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.