LDAP नीति

यह Apigee Edge के दस्तावेज़ हैं.
पर जाएं Apigee X दस्तावेज़.
info

क्या

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

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

एलडीएपी नीति का इस्तेमाल तब करें, जब सुरक्षित किए गए संसाधनों का ऐक्सेस, एलडीएपी सेवा देने वाली कंपनी के उपयोगकर्ताओं तक सीमित रखना हो. जैसे, एडमिन उपयोगकर्ता, संगठन के उपयोगकर्ता, और डेवलपर. खास तौर पर, तब जब 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 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 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

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

LdapConnectorClass

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

LdapResource

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

BaseDN

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

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

Scope

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

पुष्टि करना

Authentication

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

UserName

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

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

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

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

Password

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

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

SearchQuery

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

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

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

खोजें

Search

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

SearchQuery

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

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

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

Attributes

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

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

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

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

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

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

एलडीएपी संसाधन बनाना

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

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

एपीआई

एलडीएपी संसाधन बनाना (POST) या सभी एलडीएपी संसाधनों की सूची (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 का उदाहरण: एलडीएपी संसाधन बनाना

यहां दिए गए उदाहरण में, 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>'

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

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

  • सफल: 200
  • फ़ेल: 401

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

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

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

  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> एलिमेंट में, एनवायरमेंट रिसॉर्स के नाम का इस्तेमाल किया जाएगा.

Java के लिए, UnboundID LDAP SDK का इस्तेमाल करना

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

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

  1. कोई ब्राउज़र खोलें और UnboundID LDAP SDK के लिए, Sourceforge की फ़ाइल रिपॉज़िटरी पर जाएं:
    https://sourceforge.net/projects/ldap-sdk/files/
  2. एसडीके का वर्शन 2.3.1 (SE या Standard Edition) ढूंढें और उस वर्शन के लिए 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 फ़ाइल को मैसेज प्रोसेसर की /opt/apigee/edge-gateway/lib/thirdparty डायरेक्ट्री में कॉपी करें.
    2. अगर ज़रूरी हो, तो JAR फ़ाइल पर Apigee उपयोगकर्ता को अनुमति दें, ताकि मैसेज प्रोसेसर इसे ऐक्सेस कर सके.
    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.