אתם צופים במסמכי התיעוד של Apigee Edge.
אפשר לעבור אל מסמכי התיעוד של Apigee X. מידע
מה
מדיניות ה-LDAP מספקת:
- אימות: פרטי הכניסה של המשתמש שסופקו בבקשה מאומתים מול פרטי הכניסה בספק ה-LDAP. מדיניות LDAP מאפשרת גמישות רבה באימות, ונותנת לכם אפשרות להשתמש בכל ערך DN יחד עם הסיסמה, גם אם ערך ה-DN שבו אתם רוצים להשתמש לא מופיע בבקשה. לדוגמה, נניח שאתם צריכים להשתמש באימייל ובסיסמה לאימות. אלה האפשרויות האפשריות:
- אם כתובת האימייל מופיעה בבקשה, אפשר פשוט להשתמש בה עם הסיסמה לאימות LDAP.
- אם כתובת האימייל לא מופיעה בבקשה, אבל מאפיין אחר של DN כן (כמו מספר טלפון), אפשר להשתמש במספר הטלפון כדי לקבל את כתובת האימייל התואמת מ-LDAP, ואז להשתמש בכתובת האימייל ובסיסמה כדי לבצע אימות.
- חיפוש שם ייחודי (DN): בנוסף לאימות, אפשר גם להשתמש במדיניות LDAP כדי לזהות מאפיין משתמש בבקשה, כמו כתובת אימייל, ולבצע שאילתה שמחזירה מאפייני DN אחרים מ-LDAP עבור אותו משתמש. ה-DN שאוחזר מאוחסן במשתנה.
משתמשים במדיניות LDAP כשרוצים להגביל את הגישה למשאבים מוגנים למשתמשים בספק LDAP – כמו משתמשי אדמין, משתמשים בארגון ומפתחים – במיוחד כשגישה באמצעות טוקן OAuth לא נחוצה או שהיא מסורבלת מדי. המדיניות מיועדת גם לאחזור מטא-נתונים של שם הדומיין לשימוש בתהליכי עבודה של שרתי proxy ל-API.
לדוגמה, אפשר להגדיר שקריאה ל-API תתבצע רק אחרי שהמשתמש יעבור אימות ב-LDAP, ואז לאחזר מאפייני DN (שם דומיין) של המשתמש אחרי שהאימות יצליח.
מידע נוסף זמין במאמרים הבאים:
- ניהול מדיניות ברירת המחדל של סיסמאות LDAP לניהול API
- Important information about your password policy ב-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 לצורך אימות.
אימות מאפיין DN
<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המדיניות הזו מקבלת את ה-DN של המשתמש עם כתובת האימייל בכותרת הבקשה, ואז מאמתת את המשתמש מול 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. מאפייני ה-DN שאוחזרו מאוחסנים במשתנה. אפשר לעיין בקטע 'משתנים ספציפיים למדיניות'.
כדי לחפש ב-LDAP ולאחזר מאפייני DN, הבקשה צריכה לכלול פרטי כניסה של אדמין.
הפניה לרכיב
בהמשך מופיעים תיאורים של רכיבי המדיניות ומאפייני המדיניות של LDAP.
|
רכיב |
תיאור |
|---|---|
|
|
רכיב אב עם מאפיין שם שבו צריך להזין את שם המדיניות. |
|
|
כשמשתמשים במדיניות LDAP עם ספק LDAP מותאם אישית (לא ספק של Apigee), צריך לציין את המחלקה של מחבר LDAP עם שם מלא.
זו המחלקה שבה הטמעתם את הממשק |
|
|
מזינים את שם הסביבה של משאב ה-LDAP. מידע נוסף זמין במאמר בנושא יצירת משאב LDAP. |
|
|
רמת הבסיס של LDAP שמתחתיה נמצאים כל הנתונים שלכם. לדוגמה, בספק LDAP של Apigee, כל הנתונים נמצאים תחת
|
|
|
|
|
אימות |
|
|
|
רכיב האב של התנהגות האימות שאתם מטמיעים. |
|
|
רכיב ריק שמקבל אחד מהמאפיינים הבאים:
אם לא מתבצעת אימות באמצעות שם משתמש, או אם שם המשתמש לא נכלל בבקשה, אין צורך לכלול את הרכיב הזה. אם שם המשתמש מופיע בבקשה, אבל רוצים לאמת משתמש באמצעות מאפיין DN שאינו שם המשתמש, כמו אימייל, צריך לכלול |
|
|
רכיב ריק שמקבל אחד מהמאפיינים הבאים:
|
|
|
אם רוצים לבצע אימות באמצעות מאפיין DN שאינו שם משתמש, כמו אימייל, צריך להגדיר את מדיניות ה-LDAP כך שתקבל מאפיין DN מהבקשה (כמו שם משתמש), שמשמש לזיהוי המשתמש ב-LDAP, לאחזור האימייל ולאימות המשתמש. לדוגמה, אם ב-LDAP מוגדר מאפיין mail לאחסון כתובת אימייל:
|
|
חיפוש |
|
|
|
רכיב האב של התנהגות החיפוש שאתם מטמיעים. |
|
|
אפשר להשתמש ברכיב הזה כדי לאחזר מ-LDAP מאפייני DN נוספים של המשתמש, על ידי זיהוי המשתמש באמצעות מטא-נתונים בבקשה או בתשובה. לדוגמה, אם הבקשה מכילה את האימייל של המשתמש, וב-LDAP מוגדר מאפיין
השאילתה הזו מחפשת ב-LDAP כתובת אימייל שתואמת לכתובת האימייל שבבקשה, ועכשיו המדיניות יכולה לאחזר מאפייני DN נוספים של המשתמש הזה באמצעות רכיב Attributes. |
|
|
משתמשים באלמנט לדוגמה, אחרי שהרכיב ערכי המאפיינים הם שמות המאפיינים של DN שמוגדרים ב-LDAP. <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
הערות שימוש
Apigee Edge for Private Cloud מאפשר לכם להשתמש בספק LDAP בקריאות ל-API. בעזרת מדיניות LDAP, אפליקציות יכולות לאמת פרטי כניסה מול משתמשים שמאוחסנים ב-LDAP, ואפשר לאחזר שמות ייחודיים (DN) מ-LDAP – המטא-נתונים או המאפיינים שמשויכים לכל משתמש, כמו כתובת אימייל, כתובת ומספר טלפון. ה-DN שמוחזר מאוחסן במשתנה לשימוש נוסף על ידי ה-API proxy.
יצירה של משאב LDAP
מדיניות ה-LDAP מתבססת על משאב LDAP שיוצרים ב-Apigee Edge. משאב LDAP מספק את פרטי החיבור למאגר LDAP.
כדי ליצור ולנהל משאבי LDAP, משתמשים בממשק ה-API ובמטען הייעודי (payload) הבאים:
API
ליצור (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
מטען ייעודי
בהמשך מופיע מטען ייעודי (payload) לדוגמה בפורמט XML עם הערות לגבי השימוש.
<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
בדוגמה הבאה נוצר משאב LDAP בשם ldap1.
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'
קודי תגובה
אלה קודי התגובה של ה-HTML שהמדיניות מחזירה להצלחה או לכישלון:
- Success: 200
- Failure: 401
שימוש בספק LDAP מותאם אישית ב-Edge for Private Cloud
שימוש בספק LDAP מותאם אישית
Apigee Edge for Private Cloud מגיע עם ספק LDAP שכבר מוגדר לאינטראקציה עם מדיניות LDAP. עם זאת, אם אתם משתמשים בספק LDAP בהתאמה אישית, אתם צריכים להפעיל את הספק כדי לתמוך במדיניות 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>של הגדרת המדיניות (בקטעים הבאים), מוסיפים את שם המחלקה המלא של ספק ה-LDAP המותאם אישית. - מורידים את הקובץ custom-ldap.jar_.zip. (יכול להיות שתצטרכו ללחוץ לחיצה ימנית ולבחור באפשרות שמירה בשם).
- מבטלים את הדחיסה.
- מוסיפים את הקובץ custom-ldap.jar לסביבה ומוודאים שהוא נמצא בנתיב המחלקה.
- יוצרים משאב סביבה עבור ספק ה-LDAP. תשתמשו בשם של משאב הסביבה ברכיב
<LdapResource>של מדיניות ה-LDAP.
שימוש ב-UnboundID LDAP SDK for Java
אפשר להשתמש ב-UnboundID LDAP SDK עם מדיניות LDAP, אבל קודם צריך להוריד את גרסה 2.3.1 ולהוסיף אותה לכל נתיבי המחלקות של מעבד ההודעות.
כדי להשתמש ב-UnboundID LDAP SDK עם מדיניות LDAP:
- פותחים דפדפן ועוברים למאגר הקבצים של Sourceforge עבור UnboundID LDAP SDK:
https://sourceforge.net/projects/ldap-sdk/files/
- מחפשים את גרסה 2.3.1 (SE או Standard Edition) של ה-SDK ומורידים את קובץ ה-ZIP של הגרסה הזו. לדוגמה, מורידים את הקובץ unboundid-ldapsdk-2.3.1-se.zip.
- מחלצים את קובץ ה-JAR מקובץ ה-ZIP של ה-SDK, כמו בדוגמה הבאה:
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 לספרייה
/opt/apigee/edge-gateway/lib/thirdpartyשל Message Processor. - אם צריך, נותנים למשתמש Apigee הרשאה בקובץ ה-JAR כדי שמעבד ההודעות יוכל לגשת אליו.
- מפעילים מחדש את מעבד ההודעות:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
דפדפן Edge מוסיף את כל הספריות של צד שלישי בספרייה
/opt/apigee/edge-gateway/lib/thirdpartyלנתיב המחלקה. - מעתיקים את קובץ ה-JAR לספרייה
משתני תהליך
בהמשך מפורטים משתני מדיניות LDAP שאוכלסו על ידי SearchQuery.
|
משתנה |
תיאור |
|---|---|
ldap.policyName.execution.success |
אחרי שהמדיניות מופעלת, משתנה הזרימה הזה מכיל את הערך true או false, בהתאם לתוצאה. |
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. |