आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
क्या
LDAP नीति में ये शामिल हैं:
- पुष्टि: अनुरोध में दिए गए उपयोगकर्ता के क्रेडेंशियल की पुष्टि, LDAP सेवा देने वाली कंपनी के क्रेडेंशियल से की जाती है. LDAP नीति की मदद से, आपको पुष्टि करने की सुविधा मिलती है. इससे आपको पासवर्ड के साथ किसी भी डीएन वैल्यू का इस्तेमाल करने की सुविधा मिलती है. भले ही, वह डीएन वैल्यू अनुरोध में शामिल न हो. उदाहरण के लिए, मान लें कि आपको पुष्टि करने के लिए ईमेल / पासवर्ड का इस्तेमाल करना है. इस जांच के ये नतीजे हो सकते हैं:
- अगर ईमेल पते का इस्तेमाल अनुरोध में किया गया है, तो LDAP ऑथेंटिकेशन के लिए, पासवर्ड के साथ इसका इस्तेमाल किया जा सकता है.
- अगर अनुरोध में ईमेल पता शामिल नहीं है, लेकिन कोई दूसरा डीएन एट्रिब्यूट (जैसे कि फ़ोन नंबर) शामिल है, तो LDAP से ईमेल पता पाने के लिए, फ़ोन नंबर का इस्तेमाल किया जा सकता है. इसके बाद, पुष्टि करने के लिए ईमेल पते / पासवर्ड का इस्तेमाल किया जा सकता है.
- डिस्टिंग्विश्ड नेम (डीएन) खोज: पुष्टि करने के अलावा, एलडीएपी नीति का इस्तेमाल करके अनुरोध में मौजूद उपयोगकर्ता एट्रिब्यूट की पहचान भी की जा सकती है. जैसे, ईमेल. साथ ही, ऐसी क्वेरी की जा सकती है जो उस उपयोगकर्ता के लिए एलडीएपी से अन्य डीएन एट्रिब्यूट वापस लाती है. डीएन को किसी वैरिएबल में सेव किया जाता है.
एलडीएपी नीति का इस्तेमाल तब करें, जब सुरक्षित संसाधनों का ऐक्सेस, एलडीएपी सेवा देने वाली कंपनी के उपयोगकर्ताओं तक सीमित रखना हो. जैसे, एडमिन उपयोगकर्ता, संगठन के उपयोगकर्ता, और डेवलपर. खास तौर पर, तब जब OAuth टोकन का ऐक्सेस ज़रूरी न हो या बहुत ज़्यादा हो. इस नीति को, एपीआई प्रॉक्सी फ़्लो में इस्तेमाल करने के लिए, डोमेन नेम का मेटाडेटा वापस पाने के लिए भी डिज़ाइन किया गया है.
उदाहरण के लिए, एपीआई कॉल को सिर्फ़ तब एक्ज़ीक्यूट किया जा सकता है, जब किसी उपयोगकर्ता की पुष्टि LDAP के ज़रिए हो गई हो. इसके बाद, पुष्टि हो जाने पर उपयोगकर्ता के लिए DN (डोमेन नेम) एट्रिब्यूट को वापस पाया जा सकता है.
ज़्यादा जानकारी के लिए, यह लेख पढ़ें:
- एपीआई मैनेजमेंट के लिए, LDAP की डिफ़ॉल्ट पासवर्ड नीति मैनेज करना
- Apigee Community में "आपकी पासवर्ड नीति के बारे में अहम जानकारी"
सैंपल
उपयोगकर्ता नाम/पासवर्ड की पुष्टि
<Ldap name="4GLdapPo>licy<"
Ld>apRes<ourceldap1/Ld>apRe<source
Auth>enticati<on
UserName ref="request.he>ader.use<rname"/
Password ref=">request.<heade>r.passw<ord&qu>ot;/
< Scopesubtree/Scope
>< Bas>e<DN ref="apigee.baseDN"/B>aseDN< !-- default is> d<c=api>gee,dc=com --
/Authentication
/Ldapइस सैंपल में, LDAP सेवा देने वाली कंपनी के ख़िलाफ़ पुष्टि करने की सुविधा मिलती है. यह नीति, पुष्टि करने के लिए LDAP को अनुरोध से उपयोगकर्ता नाम और पासवर्ड भेजती है.
डीएन एट्रिब्यूट की पुष्टि करना
<Ldap name="LdapPo>licy<"
Ld>apRes<ourceldap1/Ld>apRe<source
Auth>enticati<on
Password ref="request.he>ader.pas<sword">/
SearchQuerymail={<request.head>er.mail}</Sear>chQuery<
> Scopes<ubtree/Scope
BaseDN>< ref=&q>u<ot;apigee.baseDN"/BaseDN !-- >defau<lt is dc=apigee>,d<c=com> --
/Authentication
/Ldapयह नीति, अनुरोध हेडर में मौजूद ईमेल पते के साथ उपयोगकर्ता का डीएन हासिल करती है. इसके बाद, अनुरोध हेडर में दिए गए पासवर्ड की मदद से, LDAP के ख़िलाफ़ उपयोगकर्ता की पुष्टि करती है.
LDAP में खोजना
<Ldap name="LdapPo>licy&<quot; !-- using a custom LDAP p>rovid<er -- LdapConn>ectorClasscom.custom.ldap.<MyProvider/LdapConn>ector<Class Ld>apReso<urceMyLdap/Ld>apRes<ource<>/span> Searc<h BaseDN ref="><;apigee>.<baseDN"/BaseDN !-- default is> dc=apige<e,dc=com --> SearchQuerymail={<request.head>er.mail}/<SearchQuer>y Att<ributes > < Attrib>uteaddress/At<tribute > < Attr>ibutephone/At<tribute > < Attr>ibutetitl<e/Attribute> </Attr><ibutes> < Scope/S‘cope !-’- d>efaul<t is su>b<tree >-- /Search /Ldap
यह नीति, LDAP की कस्टम सेवा देने वाली कंपनी का रेफ़रंस देती है. यह उपयोगकर्ता की पहचान करने के लिए, अनुरोध हेडर में मौजूद ईमेल पते का इस्तेमाल करता है. इसके बाद, LDAP से उपयोगकर्ता का पता, फ़ोन नंबर, और टाइटल वापस पाता है. डीएन एट्रिब्यूट को एक वैरिएबल में सेव किया जाता है. "नीति के हिसाब से बदलाव करने वाले वैरिएबल" देखें.
एलडीएपी खोजने और डीएन एट्रिब्यूट वापस पाने के लिए, अनुरोध में एडमिन के क्रेडेंशियल शामिल होने चाहिए.
एलिमेंट का रेफ़रंस
नीचे एलडीएपी नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.
|
एलिमेंट |
ब्यौरा |
|---|---|
|
|
पैरंट एलिमेंट, जिसमें नाम एट्रिब्यूट होता है. इसमें आपको नीति का नाम डालना होता है. |
|
|
Apigee की ओर से उपलब्ध कराए गए कस्टम एलडीएपी सेवा देने वाली कंपनी के साथ एलडीएपी नीति का इस्तेमाल करते समय, पूरी तरह से क्वालिफ़ाइड एलडीएपी कनेक्टर क्लास तय करें.
यह वह क्लास है जिसमें आपने Apigee का |
|
|
एलडीएपी संसाधन के एनवायरमेंट का नाम डालें. ज़्यादा जानकारी के लिए, एलडीएपी संसाधन बनाना लेख पढ़ें. |
|
|
एलडीएपी का वह बेस लेवल जिसके तहत आपका सारा डेटा मौजूद होता है. उदाहरण के लिए, Apigee के LDAP प्रोवाइडर में, सारा डेटा
|
|
|
|
|
पुष्टि करना |
|
|
|
पुष्टि करने के लिए लागू किए गए व्यवहार का पैरंट एलिमेंट. |
|
|
यह एक खाली एलिमेंट है. इसमें इनमें से कोई एक एट्रिब्यूट होता है:
अगर उपयोगकर्ता नाम से पुष्टि नहीं की जा रही है या उपयोगकर्ता नाम को अनुरोध में शामिल नहीं किया गया है, तो आपको इस एलिमेंट को शामिल करने की ज़रूरत नहीं है. अगर अनुरोध में उपयोगकर्ता नाम शामिल है, लेकिन आपको उपयोगकर्ता की पुष्टि उपयोगकर्ता नाम के अलावा किसी अन्य डीएन एट्रिब्यूट, जैसे कि ईमेल से करनी है, तो पासवर्ड से जुड़ा उपयोगकर्ता का ईमेल पाने के लिए |
|
|
यह एक खाली एलिमेंट है. इसमें इनमें से कोई एक एट्रिब्यूट होता है:
|
|
|
अगर आपको उपयोगकर्ता नाम के अलावा, किसी दूसरे डीएन एट्रिब्यूट (जैसे कि ईमेल) का इस्तेमाल करके पुष्टि करनी है, तो एलडीएपी नीति को कॉन्फ़िगर करें. इससे अनुरोध से डीएन एट्रिब्यूट (जैसे कि उपयोगकर्ता नाम) मिल जाएगा. इसका इस्तेमाल एलडीएपी में उपयोगकर्ता की पहचान करने, ईमेल पाने, और उपयोगकर्ता की पुष्टि करने के लिए किया जाता है. उदाहरण के लिए, मान लें कि LDAP, ईमेल पते को सेव करने के लिए "mail" एट्रिब्यूट तय करता है:
|
|
खोजें |
|
|
|
यह खोज के उस तरीके का पैरंट एलिमेंट होता है जिसे लागू किया जाता है. |
|
|
अनुरोध या जवाब में मेटाडेटा की मदद से उपयोगकर्ता की पहचान करके, इस
एलिमेंट का इस्तेमाल किया जा सकता है. इससे LDAP से उपयोगकर्ता के लिए अतिरिक्त DN एट्रिब्यूट वापस पाए जा सकते हैं. उदाहरण के लिए, अगर अनुरोध में उपयोगकर्ता का ईमेल पता शामिल है और आपके LDAP में उपयोगकर्ता के ईमेल पते सेव करने के लिए
यह क्वेरी, अनुरोध में दिए गए ईमेल से मेल खाने वाले ईमेल के लिए LDAP में खोज करती है. साथ ही, नीति अब Attributes एलिमेंट की मदद से, उस उपयोगकर्ता के लिए अतिरिक्त 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="l>dap<1" >Conne<ction> Ho<sts !-- port is optional: defaults to 389 for ldap:// and 636 for l>daps://< -- Host >port=&q<uot;6>36&qu<ot;foo>.com/<Host />Hosts< SSLEna>b<ledfalse/SSLEnabled !-- optional, >defau<lts to >f<alse -- > < Version3/Version !-- optio>nal, <defaults to 3->- <Authentications>i<mple/Authentication !-- optional, only> simp<le supported -- > ConnectionPr<oviderjndi|unboundi>d</ConnectionProv>ider <!-- required >-- ServerSetTypesingle|<round robin|fa>i<lover/ServerSetType !-- not ap>plica<ble for jndi -- !-- If using a custom LDAP provider, the fully> qual<ified class: -- > LdapConnectorClasscom.cu<stom.ldap.MyProvide>r/L<dapConnecto>rCl<ass /Connection Connec>t<Pool enabled="true" !-- enabled is> opti<onal, d>efaul<ts to tr>u<e -- Timeout30000/Timeout !-- optional, in milliseco>nds; <if not >se<t, no ti>m<eout -- Maxsize50/Maxsize !-- optional; if >not s<et, no m>ax< connecti>o<ns -- Prefsize30/Prefsize !-- optiona>l; if< not set><, no pref> <size -- Initsize/Initsize !-- optional>; if <not set,>< defaults> <to 1 -- Protocol/Protocol !-- optional; if not s>et,< defaults to> <39;ss>l pla<in>' -- /ConnectPool A<dmi>n < DNcn=ma>nager,<dc=apigee>,dc<=com/D>N< 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:passwor<d -d \ 'LdapResourc>e nam<e="ld>ap1&quo<t; > Conne<ctio>n < Host>s < Hostf>oo.com/<Host > /Hos<ts SS>LEnable<dfalse/>S<SLEnable>d < Version3/Vers>ion < Authenticat>ionsimp<le/Authentication > Con<nectionProviderunbo>undid/C<onnectionProv>ider <ServerSetTyper>ound <robin/Serve>rSetT<ype /Connection Co>nnectPo<ol enab>led=&<quot;tru>e"< >Ti<meout300>00/Time<out > <Maxsize50>/Maxsiz<e ><Prefsize3>0/Prefs<ize >< Initsiz>e/Ini<tsize >Proto<col/P>rotocol< > /ConnectPool Admin < > DNcn=<manager,>dc=api<gee,dc=co>m/DN < >Pas<swordsecret/P>assword /Admin /LdapResource'
रिस्पॉन्स कोड
नीचे दिए गए एचटीएमएल रिस्पॉन्स कोड, नीति के लागू होने या न होने पर मिलते हैं:
- सफल: 200
- अनुरोध पूरा नहीं हुआ: 401
Edge for Private Cloud में, एलडीएपी की सुविधा देने वाली कस्टम कंपनी का इस्तेमाल करना
कस्टम एलडीएपी सेवा देने वाली कंपनी का इस्तेमाल करना
Apigee Edge for Private Cloud में, LDAP प्रोवाइडर पहले से मौजूद होता है. इसे 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(); } - नीति कॉन्फ़िगरेशन के
<LdapConnectorClass>(अगले सेक्शन) में जाकर, अपने कस्टम एलडीएपी प्रोवाइडर का पूरा क्लास नेम जोड़ें. - यह फ़ाइल डाउनलोड करें: custom-ldap.jar_.zip. (आपको राइट क्लिक करके, इस रूप में सेव करें को चुनना पड़ सकता है.)
- इसे अनज़िप करें.
- अपने एनवायरमेंट में custom-ldap.jar फ़ाइल जोड़ें. साथ ही, पक्का करें कि यह आपके क्लासपाथ में हो.
- एलडीएपी प्रोवाइडर के लिए एनवायरमेंट रिसोर्स बनाएं. एलडीएपी नीति के
<LdapResource>एलिमेंट में, एनवायरमेंट रिसॉर्स के नाम का इस्तेमाल किया जाएगा.
UnboundID LDAP SDK for Java का इस्तेमाल करना
एलडीएपी नीति के साथ UnboundID LDAP SDK का इस्तेमाल किया जा सकता है. हालांकि, इसके लिए आपको सबसे पहले वर्शन 2.3.1 डाउनलोड करना होगा. साथ ही, इसे अपने हर मैसेज प्रोसेसर के क्लासपाथ में जोड़ना होगा.
LDAP नीति के साथ UnboundID LDAP SDK का इस्तेमाल करने के लिए:
- कोई ब्राउज़र खोलें और UnboundID LDAP SDK के लिए Sourceforge फ़ाइल रिपॉज़िटरी पर जाएं:
https://sourceforge.net/projects/ldap-sdk/files/
- एसडीके का वर्शन 2.3.1 (एसई या स्टैंडर्ड एडिशन) ढूंढें और उस वर्शन के लिए ZIP फ़ाइल डाउनलोड करें. उदाहरण के लिए, "unboundid-ldapsdk-2.3.1-se.zip" डाउनलोड करें.
- एसडीके की 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के साथ डायरेक्ट्री स्ट्रक्चर को हटा देता है. हालांकि, यह ज़रूरी नहीं है. - हर मैसेज प्रोसेसर नोड पर:
- JAR फ़ाइल को Message Processor के
/opt/apigee/edge-gateway/lib/thirdpartyडायरेक्ट्री में कॉपी करें. - अगर ज़रूरी हो, तो Apigee उपयोगकर्ता को JAR फ़ाइल पर अनुमति दें, ताकि मैसेज प्रोसेसर इसे ऐक्सेस कर सके.
- मैसेज प्रोसेसर को रीस्टार्ट करें:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge,
/opt/apigee/edge-gateway/lib/thirdpartyडायरेक्ट्री में मौजूद तीसरे पक्ष की सभी लाइब्रेरी को क्लासपाथ में जोड़ता है. - JAR फ़ाइल को Message Processor के
फ़्लो वैरिएबल
यहां 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. |