LDAP नीति

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

क्या

LDAP नीति में ये शामिल हैं:

  • पुष्टि: अनुरोध में दिए गए उपयोगकर्ता के क्रेडेंशियल की पुष्टि, LDAP सेवा देने वाली कंपनी के क्रेडेंशियल से की जाती है. 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 से उपयोगकर्ता का पता, फ़ोन नंबर, और टाइटल वापस पाता है. डीएन एट्रिब्यूट को एक वैरिएबल में सेव किया जाता है. "नीति के हिसाब से बदलाव करने वाले वैरिएबल" देखें.

एलडीएपी खोजने और डीएन एट्रिब्यूट वापस पाने के लिए, अनुरोध में एडमिन के क्रेडेंशियल शामिल होने चाहिए.

एलिमेंट का रेफ़रंस

नीचे एलडीएपी नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.

एलिमेंट

ब्यौरा

Ldap

पैरंट एलिमेंट, जिसमें नाम एट्रिब्यूट होता है. इसमें आपको नीति का नाम डालना होता है.

LdapConnectorClass

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

LdapResource

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

BaseDN

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

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

Scope

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

पुष्टि करना

Authentication

पुष्टि करने के लिए लागू किए गए व्यवहार का पैरंट एलिमेंट.

UserName

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

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

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

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

Password

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

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

SearchQuery

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

उदाहरण के लिए, मान लें कि LDAP, ईमेल पते को सेव करने के लिए "mail" एट्रिब्यूट तय करता है:

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

खोजें

Search

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

SearchQuery

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

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

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

Attributes

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

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

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

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

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

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

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

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

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

एपीआई

LDAP रिसॉर्स (POST) बनाएं या सभी LDAP रिसॉर्स (GET) की सूची बनाएं:

/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
  • अनुरोध पूरा नहीं हुआ: 401

Edge for Private Cloud में, एलडीएपी की सुविधा देने वाली कस्टम कंपनी का इस्तेमाल करना

कस्टम एलडीएपी सेवा देने वाली कंपनी का इस्तेमाल करना

Apigee Edge for Private Cloud में, LDAP प्रोवाइडर पहले से मौजूद होता है. इसे LDAP नीति के साथ इंटरैक्ट करने के लिए पहले से कॉन्फ़िगर किया गया होता है. हालांकि, अगर कस्टम एलडीएपी सेवा देने वाली कंपनी का इस्तेमाल किया जा रहा है, तो आपको सेवा देने वाली कंपनी को एलडीएपी नीति के साथ काम करने की अनुमति देनी होगी. ऐसा करने के लिए:

  1. एलडीएपी सेवा देने वाली क्लास में, 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> (अगले सेक्शन) में जाकर, अपने कस्टम एलडीएपी प्रोवाइडर का पूरा क्लास नेम जोड़ें.
  3. यह फ़ाइल डाउनलोड करें: custom-ldap.jar_.zip. (आपको राइट क्लिक करके, इस रूप में सेव करें को चुनना पड़ सकता है.)
  4. इसे अनज़िप करें.
  5. अपने एनवायरमेंट में custom-ldap.jar फ़ाइल जोड़ें. साथ ही, पक्का करें कि यह आपके क्लासपाथ में हो.
  6. एलडीएपी प्रोवाइडर के लिए एनवायरमेंट रिसोर्स बनाएं. एलडीएपी नीति के <LdapResource> एलिमेंट में, एनवायरमेंट रिसॉर्स के नाम का इस्तेमाल किया जाएगा.

UnboundID LDAP SDK for Java का इस्तेमाल करना

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

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

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

फ़्लो वैरिएबल

यहां 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.