سياسة LDAP

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

المزايا

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

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

استخدام سياسة 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. يتم تخزين سمات DN التي تم استردادها في متغيّر. الاطّلاع على القسم المتعلّق بالسياسة ".

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

مرجع العنصر

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

العنصر

الوصف

Ldap

العنصر الرئيسي الذي يتضمن سمة name (الاسم) لتتمكن من إدخال اسم السياسة:

LdapConnectorClass

عند استخدام سياسة LDAP مع بروتوكول LDAP مخصّص (لم يتم توفيره من خلال Apigee)، حدد فئة موصل LDAP المؤهلة بالكامل. هذه هي الفئة التي استخدمت فيها ExternalLdapConProvider في Apigee. من واجهة pyplot.

LdapResource

أدخِل اسم البيئة لمورد LDAP. راجع إنشاء مورد LDAP لمزيد من المعلومات.

BaseDN

المستوى الأساسي لـ LDAP الذي توجد تحته جميع بياناتك. على سبيل المثال، في موفِّر خدمة LDAP في Apigee، تندرج جميع البيانات ضمن dc=apigee,dc=com.

  • ref: تُستخدَم لتحديد متغيّر تدفق يحتوي على قيمة BaseDN، مثل apigee.baseDN. للمرجع الأولوية على قيمة BaseDN الصريحة. إذا حددت لكل من المرجع والقيمة، للمرجع الأولوية. إذا لم يتم حلّ المرجع عند وقت التشغيل، يتم استخدام القيمة.

Scope

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

المصادقة

Authentication

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

UserName

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

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

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

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

Password

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

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

SearchQuery

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

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

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

بحث

Search

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

SearchQuery

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

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

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

Attributes

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

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

قيم السمات هي أسماء سمات الاسم المميز (DN) المحددة في بروتوكول 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 وإدارتها، استخدم واجهة برمجة التطبيقات والحمولة التاليين:

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

أنشئ (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>

مثال على التجبير: إنشاء مورد 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 for 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 إلى بيئتك وتأكَّد من أنه موجود في مسار classpath.
  6. أنشئ مورد بيئة لموفّر LDAP. ستستخدم مورد البيئة الاسم في العنصر <LdapResource> في سياسة LDAP.

استخدام حزمة تطوير البرامج (SDK) لـ UnboundID LDAP لنظام Java

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

لاستخدام حزمة تطوير البرامج (SDK) لـ UnboundID LDAP مع سياسة LDAP:

  1. افتح متصفحًا وانتقِل إلى مستودع ملفات Sourceforge لحزمة تطوير البرامج (SDK) LDAP لـ UnboundID:
    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

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

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.