LDAP नीति

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

क्या

LDAP नीति में ये सुविधाएं मिलती हैं:

  • पुष्टि करना: अनुरोध में दिए गए उपयोगकर्ता क्रेडेंशियल की पुष्टि की गई है के क्रेडेंशियल के साथ काम करती है. एलडीएपी नीति से आपको कई सुविधाएं मिलती हैं. इससे पासवर्ड के साथ कोई भी डीएन वैल्यू इस्तेमाल की जा सकती है, भले ही वह डीएन वैल्यू आपके अनुरोध में नहीं है. उदाहरण के लिए, मान लें कि आपको इसके लिए ईमेल / पासवर्ड का उपयोग करना होगा पुष्टि करने के लिए. यहां दिए गए विकल्प इस्तेमाल किए जा सकते हैं:
    • अगर ईमेल अनुरोध में दिया गया है, तो आप उसका इस्तेमाल LDAP के पासवर्ड के साथ कर सकते हैं पुष्टि करने के लिए.
    • अगर ईमेल, अनुरोध में नहीं है, लेकिन दूसरा डीएन एट्रिब्यूट है (जैसे कि फ़ोन नंबर), आप LDAP से संबंधित ईमेल पाने के लिए फ़ोन नंबर का इस्तेमाल कर सकते हैं, फिर ईमेल / पुष्टि करने के लिए पासवर्ड.
  • खास नाम (डीएन) सर्च: पुष्टि करने के अलावा, आप ये काम भी कर सकते हैं साथ ही, अनुरोध में उपयोगकर्ता के एट्रिब्यूट की पहचान करने के लिए, LDAP नीति का इस्तेमाल भी किया जा सकता है. जैसे, ईमेल और ऐसी क्वेरी करें जो उस उपयोगकर्ता के लिए LDAP से अन्य डीएन एट्रिब्यूट हासिल करती हो. वापस पाया गया DN यह है किसी वैरिएबल में सेव होता है.

जब सुरक्षित संसाधनों का ऐक्सेस आपके LDAP के उपयोगकर्ताओं तक सीमित होना चाहिए, तब LDAP नीति का इस्तेमाल करें सेवा देने वाले संगठन—जैसे आपके एडमिन उपयोगकर्ता, संगठन के उपयोगकर्ता, और डेवलपर—खास तौर पर तब, जब OAuth टोकन का ऐक्सेस ज़रूरी नहीं है या बहुत ज़्यादा वज़न वाला है. इस नीति को इन लोगों के लिए भी बनाया गया है एपीआई प्रॉक्सी फ़्लो में इस्तेमाल करने के लिए, डोमेन नेम का मेटाडेटा वापस पाना.

उदाहरण के लिए, किसी उपयोगकर्ता की पहचान की पुष्टि होने के बाद ही, एपीआई कॉल चलाया जा सकता है एलडीएपी के ख़िलाफ़; और इसके बाद उपयोगकर्ता के लिए वैकल्पिक रूप से डीएन (डोमेन नेम) एट्रिब्यूट पाएं प्रमाणीकरण सफल रहा.

ज़्यादा जानकारी के लिए, देखें:

सैंपल

उपयोगकर्ता नाम/पासवर्ड की पुष्टि करना

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

नीति का नाम डालने के लिए, नाम एट्रिब्यूट वाला पैरंट एलिमेंट.

LdapConnectorClass

पसंद के मुताबिक एलडीएपी के साथ एलडीएपी नीति का इस्तेमाल करते समय provider (Apigee से नहीं दिया गया है), पूरी तरह क्वालिफ़ाइड LDAP कनेक्टर क्लास की जानकारी दें. यही वह क्लास है जिसमें आपने Apigee के ExternalLdapConProvider को लागू किया है इंटरफ़ेस पर कॉपी करने की सुविधा मिलती है.

LdapResource

LDAP संसाधन का एनवायरमेंट नाम डालें. देखें ज़्यादा जानकारी के लिए, LDAP संसाधन का इस्तेमाल करें.

BaseDN

LDAP का वह बेस लेवल जिसके तहत आपका पूरा डेटा मौजूद है. उदाहरण के लिए, Apigee की LDAP कंपनी, सारा डेटा dc=apigee,dc=com से कम का है.

  • ref: BaseDN वैल्यू वाले फ़्लो वैरिएबल के बारे में बताने के लिए, इसका इस्तेमाल करें, जैसे apigee.baseDN. साफ़ तौर पर दी गई BaseDN वैल्यू के मुकाबले, ref को प्राथमिकता दी जाती है. अगर आप तय करते हैं कि दोनों ref और वैल्यू, ref को प्राथमिकता मिलती है. अगर रेफ़रंस का समाधान इस पर नहीं होता है रनटाइम, वैल्यू का इस्तेमाल किया जाता है.

Scope

  • object: पुष्टि या खोज, सिर्फ़ एलडीएपी.
  • onelevel: पुष्टि या खोज, बेस से एक लेवल नीचे होती है लेवल.
  • सबट्री (डिफ़ॉल्ट): पुष्टि या खोज, बुनियादी स्तर पर होती है और बार-बार, आधार के नीचे.

पुष्टि करना

Authentication

आपने पुष्टि करने के लिए जिस तरीके को लागू किया है उसके लिए पैरंट एलिमेंट.

UserName

ऐसा खाली एलिमेंट जो इनमें से कोई एक एट्रिब्यूट लेता है:

  • ref: अनुरोध में उपयोगकर्ता नाम का रेफ़रंस, जैसे request.header.username
  • value: उपयोगकर्ता नाम

अगर उपयोगकर्ता नाम से पुष्टि नहीं की जा रही है या अगर उपयोगकर्ता नाम अनुरोध है, तो आपको यह तत्व शामिल करने की आवश्यकता नहीं है.

अगर उपयोगकर्ता नाम अनुरोध में है, लेकिन आपको उपयोगकर्ता की पुष्टि डीएन एट्रिब्यूट से करनी है उपयोगकर्ता नाम जैसे कि ईमेल के अलावा, उपयोगकर्ता का ईमेल पाने के लिए SearchQuery शामिल करें पासवर्ड से जुड़ा होता है. LDAP नीति, LDAP प्रोवाइडर से क्वेरी करने के लिए उपयोगकर्ता नाम का इस्तेमाल करती है को जोड़ना होगा. इसके बाद, पुष्टि करने के लिए इसका इस्तेमाल किया जाता है.

Password

ऐसा खाली एलिमेंट जो इनमें से कोई एक एट्रिब्यूट लेता है:

  • ref: अनुरोध में पासवर्ड का रेफ़रंस, जैसे request.header.password
  • value: एन्क्रिप्ट (सुरक्षित) किया गया पासवर्ड ही

SearchQuery

अगर आप उपयोगकर्ता नाम के अलावा, ईमेल जैसे किसी DN एट्रिब्यूट का इस्तेमाल करके पुष्टि करना चाहते हैं, तो अनुरोध से डीएन एट्रिब्यूट पाने के लिए, LDAP नीति को कॉन्फ़िगर करें (जैसे कि उपयोगकर्ता नाम), इसका इस्तेमाल LDAP में उपयोगकर्ता की पहचान करने, ईमेल वापस पाने, और उपयोगकर्ता.

उदाहरण के लिए, माना जाता है कि LDAP "मेल" के बारे में बताता है एट्रिब्यूट:

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

खोजें

Search

आपने खोज के लिए जो तरीका लागू किया है उसके लिए पैरंट एलिमेंट.

SearchQuery

अनुरोध या जवाब में मेटाडेटा के साथ उपयोगकर्ता की पहचान करके, इसका इस्तेमाल किया जा सकता है एलिमेंट का इस्तेमाल करें. उदाहरण के लिए, अगर अनुरोध में उपयोगकर्ता का ईमेल शामिल है और आपके LDAPmail उपयोगकर्ता के ईमेल पते सेव करने के लिए, आपको नीचे दी गई सेटिंग का इस्तेमाल करना होगा:

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

यह क्वेरी, अनुरोध में मौजूद ईमेल से मेल खाने वाले ईमेल के लिए LDAP की खोज करती है और यह नीति अब उस उपयोगकर्ता के लिए, एट्रिब्यूट की मदद से अन्य डीएन एट्रिब्यूट हासिल कर सकती है एलिमेंट.

Attributes

एक या ज़्यादा <Attribute> एलिमेंट का इस्तेमाल करके उस DN मेटाडेटा की पहचान करें जिसे आपको उपयोगकर्ता के लिए वापस लाना है. कम से कम एक एट्रिब्यूट आवश्यक.

उदाहरण के लिए, SearchQuery से उपयोगकर्ता की पहचान होने के बाद, नीति अब उपयोगकर्ता के लिए डीएन एट्रिब्यूट की मदद से जानकारी वापस ला सकती है. जैसे: पता, फ़ोन नंबर, और उपयोगकर्ता नाम, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है.

एट्रिब्यूट की वैल्यू, आपके LDAP में बताए गए डीएन एट्रिब्यूट के नाम हैं.

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

इस्तेमाल की जानकारी

प्राइवेट क्लाउड के लिए Apigee Edge की मदद से, एपीआई कॉल में LDAP की सेवा का फ़ायदा लिया जा सकता है. LDAP के साथ नीति के मुताबिक, ऐप्लिकेशन LDAP में सेव किए गए उपयोगकर्ताओं के क्रेडेंशियल की पुष्टि कर सकते हैं. साथ ही, ये काम किए जा सकते हैं एलडीएपी से खास नाम (डीएन) पाएं—ये मेटाडेटा या एट्रिब्यूट से जुड़े होते हैं जैसे कि ईमेल, पता, और फ़ोन नंबर. वापस किया गया डीएन, वैरिएबल में इस अवधि के लिए सेव किया जाता है: आगे से, एपीआई प्रॉक्सी का इस्तेमाल करना होगा.

LDAP संसाधन बनाएं

LDAP नीति में, Apigee Edge में बनाए गए LDAP संसाधन का इस्तेमाल किया जाता है. LDAP संसाधन आपके LDAP रिपॉज़िटरी (डेटा स्टोर करने की जगह) को कनेक्शन की जानकारी देता है.

LDAP संसाधन बनाने और प्रबंधित करने के लिए, नीचे दिए गए एपीआई और पेलोड का इस्तेमाल करें:

एपीआई

कोई LDAP संसाधन या सूची (GET) सभी LDAP संसाधन बनाएं (POST):

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

एलडीएपी संसाधन (GET), अपडेट (POST), और मिटाएं (DELETE) के बारे में जानकारी पाएं:

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

पेलोड

नीचे, इस्तेमाल से जुड़ी टिप्पणियों के साथ एक्सएमएल पेलोड का सैंपल दिया गया है.

<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 संसाधन बनाएं

नीचे दिया गया उदाहरण ldap1 नाम का एक LDAP संसाधन बनाता है.

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

रिस्पॉन्स कोड

नीति के सही होने या न होने पर, यहां एचटीएमएल रिस्पॉन्स कोड दिए गए हैं:

  • पूरा हुआ: 200
  • Failure: 401

प्राइवेट क्लाउड के लिए Edge में पसंद के मुताबिक LDAP प्रोवाइडर का इस्तेमाल किया जा रहा है

कस्टम LDAP प्रोवाइडर

निजी क्लाउड के लिए Apigee Edge, एलडीएपी की सेवा देने वाली कंपनी के साथ आता है, जिसे पहले से ही 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> एलिमेंट में दिया गया है.

इसका उपयोग करके Java के लिए, UnboundID LDAP SDK

LDAP नीति के साथ UnboundID LDAP SDK का इस्तेमाल किया जा सकता है, लेकिन आपको पहले इस वर्शन को डाउनलोड करना होगा 2.3.1 और उसे अपने हर मैसेज प्रोसेसर के क्लासपाथ में जोड़ें.

LDAP नीति के साथ UnboundID LDAP SDK का इस्तेमाल करने के लिए:

  1. ब्राउज़र खोलें और UnboundID LDAP SDK के लिए, Sourceforge फ़ाइल के रिपॉज़िटरी (डेटा स्टोर करने की जगह) पर जाएं:
    https://sourceforge.net/projects/ldap-sdk/files/
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  2. SDK टूल का 2.3.1 (SE या स्टैंडर्ड वर्शन) ढूंढें और ZIP फ़ाइल डाउनलोड करें उस वर्शन के लिए. उदाहरण के लिए, "unboundid-ldapsdk-2.3.1-se.zip" डाउनलोड करें.
  3. SDK टूल की ZIP फ़ाइल से JAR फ़ाइल निकालें, जैसा कि नीचे दिए गए उदाहरण में बताया गया है:
    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. अगर ज़रूरी हो, तो JAR फ़ाइल पर Apigee उपयोगकर्ता को अनुमति दें, ताकि मैसेज प्रोसेसर उसे ऐक्सेस कर सके.
    3. Edge, सभी तीसरे पक्ष की लाइब्रेरी को /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

नीति लागू होने के बाद, इस फ़्लो वैरिएबल में "सही" वैल्यू शामिल होती है या "गलत" है, .

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.