אתם צופים במסמכי התיעוד של Apigee Edge.
אפשר לעיין במסמכי התיעוד של Apigee X. מידע

מה
מאפשרת להשתמש באימות בסיסי קל משקל כדי לאבטח את החיבורים האחרונים. המדיניות מקבלת שם משתמש וסיסמה, מקודדת אותם בפורמט Base64 וכותבת את הערך שמתקבל למשתנה. הערך שמתקבל הוא בפורמט Basic
Base64EncodedString
. בדרך כלל כותבים את הערך הזה בכותרת HTTP, כמו הכותרת Authorization.
המדיניות מאפשרת גם לפענח פרטי כניסה שמאוחסנים במחרוזת מקודדת של Base64 לשם משתמש ולסיסמה.
סרטון: בסרטון הזה מוסבר איך לקודד שם משתמש וסיסמה ב-Base64 באמצעות מדיניות האימות הבסיסי.
סרטון: בסרטון הזה מוסבר איך לפענח שם משתמש וסיסמה בקידוד Base64 באמצעות מדיניות אימות בסיסי.
דוגמאות
קידוד בשיחות יוצאות
<BasicAuthentication name="ApplyBasicAuthHeader"> <DisplayName>ApplyBasicAuthHeader</DisplayName> <Operation>Encode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="BasicAuth.credentials.username" /> <Password ref="BasicAuth.credentials.password" /> <AssignTo createNew="false">request.header.Authorization</AssignTo> </BasicAuthentication>
בהגדרת המדיניות לדוגמה שלמעלה, שם המשתמש והסיסמה שצריך לקודד נגזרים מהמשתנים שצוינו במאפייני ref
ברכיבים <User>
ו-<Password>
. צריך להגדיר את המשתנים לפני שהמדיניות הזו מופעלת. בדרך כלל, המשתנים מאוכלסים בערכים שנקראים ממפת מפתח/ערך. ראו מדיניות בנושא פעולות של Key Value Map.
ההגדרה הזו גורמת לכותרת ה-HTTP בשם Authorization, כפי שמצוין ברכיב <AssignTo>, להתווסף להודעת הבקשה היוצאת שנשלחת לשרת העורפי:
Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk
הערכים של <User>
ו-<Password>
משורשרים
עם נקודתיים לפני קידוד Base64.
נניח שיש לכם מיפוי של מפתח/ערך עם הרשומה הבאה:
{ "encrypted" : true, "entry" : [ { "name" : "username", "value" : "MyUsername" }, { "name" : "password", "value" : "MyPassword" } ], "name" : "BasicAuthCredentials" }
כדי לחלץ את הערכים של הרכיבים <User>
ו-<Password>
מחנות המפתחות/ערכים ולאכלס אותם במשתנים credentials.username
ו-credentials.password
, צריך לצרף את כללי המדיניות הבאים של KeyValueMapOperations לפני כלל המדיניות BasicAuthentication:
<KeyValueMapOperations name="getCredentials" mapIdentifier="BasicAuthCredentials"> <Scope>apiproxy</Scope> <Get assignTo="credentials.username" index='1'> <Key> <Parameter>username</Parameter> </Key> </Get> <Get assignTo="credentials.password" index='1'> <Key> <Parameter>password</Parameter> </Key> </Get> </KeyValueMapOperations>
פענוח של שיחות נכנסות
<BasicAuthentication name="DecodeBaseAuthHeaders"> <DisplayName>Decode Basic Authentication Header</DisplayName> <Operation>Decode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.header.username" /> <Password ref="request.header.password" /> <Source>request.header.Authorization</Source> </BasicAuthentication>
בדוגמה הזו למדיניות, המדיניות מפענחת את שם המשתמש והסיסמה מתוך
Authorization
כותרת ה-HTTP, כפי שמצוין ברכיב <Source>. המחרוזת בקידוד Base64
צריכה להיות בפורמט Basic Base64EncodedString.
המדיניות כותבת את שם המשתמש המפוענח למשתנה request.header.username ואת הסיסמה המפוענחת למשתנה request.header.password.
מידע על המדיניות בנושא אימות בסיסי
למדיניות יש שני מצבי פעולה:
- קידוד: קידוד Base64 מקודד שם משתמש וסיסמה שמאוחסנים במשתנים
- Decode: מפענח את שם המשתמש והסיסמה ממחרוזת בקידוד Base64
בדרך כלל, שם המשתמש והסיסמה מאוחסנים בחנות של זוגות מפתח/ערך, ואז נקראים ממנה בזמן הריצה. פרטים על שימוש בחנות של זוגות מפתח/ערך מופיעים במאמר מדיניות בנושא פעולות של מיפוי מפתח/ערך.
הפניה לרכיב
הפניה לרכיב מתארת את הרכיבים והמאפיינים של מדיניות BasicAuthentication.
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1"> <DisplayName>Basic Authentication 1</DisplayName> <Operation>Encode</Operation> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <User ref="request.queryparam.username" /> <Password ref="request.queryparam.password" /> <AssignTo createNew="false">request.header.Authorization</AssignTo> <Source>request.header.Authorization</Source> </BasicAuthentication>
מאפיינים של <BasicAuthentication>
<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
name |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
צריך להגדיר את הערך יש להגדיר ל- |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
<DisplayName> רכיב
צריך להשתמש בנוסף למאפיין name
כדי להוסיף תווית למדיניות
עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, הערך של המאפיין |
---|---|
נוכחות | אופציונלי |
סוג | מחרוזת |
אלמנט <Operation>
המדיניות קובעת אם פרטי הכניסה מקודדים או מפוענחים ב-Base64.
<Operation>Encode</Operation>
ברירת מחדל: | לא רלוונטי |
נוכחות: | חובה |
סוג: |
מחרוזת. הערכים האפשריים כוללים:
|
אלמנט <IgnoreUnresolvedVariables>
אם המדיניות מוגדרת כ-true
, לא תופיע שגיאה אם לא ניתן לפתור משתנה. כשמשתמשים בהגדרה הזו בהקשר של מדיניות BasicAuthentication, בדרך כלל היא מוגדרת ל-false
כי בדרך כלל עדיף להציג שגיאה אם לא ניתן למצוא שם משתמש או סיסמה במשתנים שצוינו.
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
ברירת מחדל: | true |
נוכחות: | אופציונלי |
סוג: |
בוליאני |
אלמנט <User>
- לקידוד, משתמשים ברכיב
<User>
כדי לציין את המשתנה שמכיל את שם המשתמש. הערכים של שם המשתמש והסיסמה מחוברים באמצעות נקודתיים לפני קידוד Base64. - לפענוח, מציינים את המשתנה שבו ייכתב שם המשתמש המפוענח.
<User ref="request.queryparam.username" />
ברירת מחדל: | לא רלוונטי |
נוכחות: | חובה |
סוג: |
לא רלוונטי |
מאפיינים
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
ref |
המשתנה שממנו המדיניות קוראת באופן דינמי את שם המשתמש (קידוד) או כותבת את שם המשתמש (פענוח). |
לא רלוונטי | חובה |
אלמנט <Password>
- לקידוד, משתמשים באלמנט
<Password>
כדי לציין את המשתנה שמכיל את הסיסמה. - לפענוח, מציינים את המשתנה שבו הסיסמה המפוענחת נכתבת.
<Password ref="request.queryparam.password" />
ברירת מחדל: | לא רלוונטי |
נוכחות: | חובה |
סוג: |
לא רלוונטי |
מאפיינים
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
ref |
המשתנה שממנו המדיניות קוראת באופן דינמי את הסיסמה (encode) או כותבת את הסיסמה (decode). |
לא רלוונטי | חובה |
אלמנט <AssignTo>
עבור פעולת Encode
, המדיניות הזו מציינת את משתנה היעד שיוגדר עם הערך המקודד שנוצר על ידי המדיניות הזו.
בדוגמה הבאה מצוין שהמדיניות צריכה להגדיר את הכותרת Authorization
של ההודעה לערך שנוצר:
<AssignTo createNew="false">request.header.Authorization</AssignTo>
ברירת מחדל: | לא רלוונטי |
נוכחות: | נדרש לפעולה Encode . |
סוג: |
מחרוזת |
מאפיינים
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
createNew | ההגדרה קובעת אם המדיניות תשכתב את המשתנה אם הוא כבר מוגדר.
אם הערך הוא false, ההקצאה למשתנה מתרחשת רק אם המשתנה לא מוגדר (null). אם הערך הוא true, ההקצאה למשתנה תמיד מתרחשת. בדרך כלל מגדירים את המאפיין הזה לערך false (ברירת המחדל). |
false | אופציונלי |
אלמנט <Source>
לפענוח, המשתנה שמכיל את המחרוזת בקידוד Base64, בפורמט Basic
Base64EncodedString
. לדוגמה, מציינים request.header.Authorization
, שמתאים לכותרת Authorization.
<Source>request.header.Authorization</Source>
ברירת מחדל: | לא רלוונטי |
נוכחות: | נדרש לפעולת הפענוח. |
סוג: |
לא רלוונטי |
משתני תהליך
משתנה הזרימה הבא מוגדר כשהמדיניות נכשלת:
BasicAuthentication.{policy_name}.failed
(עם הערך true)
הפניה לשגיאה
בקטע הזה מתוארים קודי השגיאה והודעות השגיאה שהוחזרו, ומשתני התקלה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת את המידע הזה אם אתם מפתחים כללי כשל כדי לטפל בשגיאות. מידע נוסף זמין במאמר מה צריך לדעת? מידע על שגיאות שקשורות למדיניות וטיפול פגמים.
שגיאות זמן ריצה
השגיאות האלה עשויות להתרחש כשהמדיניות מופעלת.
קוד תקלה | סטטוס HTTP | סיבה | תיקון |
---|---|---|---|
steps.basicauthentication.InvalidBasicAuthenticationSource |
500 | במהלך פענוח כשהמחרוזת הנכנסת בקידוד Base64 לא מכילה ערך חוקי או הכותרת לא תקינה (למשל, לא מתחילה ב-'בסיסי'). | build |
steps.basicauthentication.UnresolvedVariable |
500 | משתני המקור הנדרשים לפענוח או לקידוד לא קיימים. השגיאה הזו יכולה
מתרחשת רק אם הערך של IgnoreUnresolvedVariables הוא False. |
build |
שגיאות פריסה
השגיאות האלו עשויות להתרחש כאשר פורסים שרת proxy שמכיל את המדיניות הזו.
שם השגיאה | מתרחשת כאשר | תיקון |
---|---|---|
UserNameRequired |
הרכיב <User> חייב להיכלל בפעולה בעלת השם. |
build |
PasswordRequired |
הרכיב <Password> חייב להיכלל בפעולה בעלת השם. |
build |
AssignToRequired |
הרכיב <AssignTo> חייב להיכלל בפעולה בעלת השם. |
build |
SourceRequired |
הרכיב <Source> חייב להיכלל בפעולה בעלת השם. |
build |
משתני כשל
המשתנים האלה מוגדרים כשמתרחשת שגיאה בסביבת זמן הריצה. מידע נוסף זמין במאמר מה צריך לדעת? על שגיאות שקשורות למדיניות.
משתנים | איפה | דוגמה |
---|---|---|
fault.name="fault_name" |
fault_name הוא שם השגיאה, כפי שמצוין בטבלה שגיאות זמן ריצה שלמעלה. שם השגיאה הוא החלק האחרון בקוד השגיאה. | fault.name Matches "UnresolvedVariable" |
BasicAuthentication.policy_name.failed |
policy_name הוא השם שצוין על ידי המשתמש של המדיניות שגרמה לבעיה. | BasicAuthentication.BA-Authenticate.failed = true |
דוגמה לתגובת שגיאה
{ "fault":{ "detail":{ "errorcode":"steps.basicauthentication.UnresolvedVariable" }, "faultstring":"Unresolved variable : request.queryparam.password" } }
דוגמה לכלל שגוי
<FaultRule name="Basic Authentication Faults"> <Step> <Name>AM-UnresolvedVariable</Name> <Condition>(fault.name Matches "UnresolvedVariable") </Condition> </Step> <Step> <Name>AM-AuthFailedResponse</Name> <Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition> </Step> <Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition> </FaultRule>