מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
UnresolvedVariable
קוד שגיאה
steps.basicauthentication.UnresolvedVariable
גוף התשובה לשגיאה
{
"fault": {
"faultstring": "Unresolved variable : [variable_name]",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
הודעת שגיאה לדוגמה
{
"fault": {
"faultstring": "Unresolved variable : request.header.Authorization",
"detail": {
"errorcode": "steps.basicauthentication.UnresolvedVariable"
}
}
}
סיבה
השגיאה הזו מתקבלת אם המשתנה שמכיל את המחרוזת בקידוד Base64 שצוין ברכיב <Source>
של מדיניות BasicAuthentication הוא:
- לא כולל (לא זמין בתהליך הספציפי שבו המדיניות מופעלת)
- לא ניתן לפתרון (לא מוגדר)
לדוגמה, השגיאה הזו מתרחשת אם במדיניות BasicAuthentication יש משתנה שמצוין בתור request.header.Authorization
ברכיב <Source>
, אבל הכותרת Authorization לא מועברת כחלק מבקשת ה-API.
אבחון
מזהים את המשתנה שמשמש לרכיב
<Source>
במדיניות BasicAuthentication. המידע הזה מופיע ברכיבfaultstring
של תגובת השגיאה. לדוגמה, ב-faultstring,
הבא, המשתנה שמשמש לרכיב<Source>
הואrequest.header.Authorization
:"faultstring": "Unresolved variable : request.header.Authorization"
לבדוק את כל כללי המדיניות של BasicAuthentication ב-Proxy ל-API הספציפי שבו התרחשה הכשל. יכול להיות שיש מדיניות אחת או יותר של אימות בסיסי. צריך לזהות את המדיניות או המדיניות הספציפית של BasicAuthentication שבהם המשתנה שצוין ברכיב
<Source>
תואם לשם המשתנה שזוהה במחרוזת השגיאה (שלב 1 למעלה).לדוגמה, המדיניות הבאה מגדירה את הרכיב
<Source>
כמשתנה בשםrequest.header.Authorization
, שתואם לערך בשדהfaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <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>
קובעים אם המשתנה מוגדר וזמין בתהליך שבו מתבצעת מדיניות BasicAuthentication.
אם המשתנה הוא:
- לא כולל (לא זמין בתהליך הספציפי שבו המדיניות מופעלת)
- לא ניתן לפתרון (לא מוגדר)
וזאת הסיבה לשגיאה.
בדוגמה של מדיניות BasicAuthentication שמוצגת למעלה, המשתנה
request.header.Authorization
לא הועבר כחלק מהבקשה. כלומר, בקשת ה-API נשלחה ללא הכותרת Authorization כפי שמוצג בהמשך:curl -v "http://org-env.apigee.net/basicauth"
מכיוון שהמשתנה שנעשה בו שימוש במדיניות BasicAuthentication לא זמין, מתקבל קוד השגיאה:
steps.basicauthentication.UnresolvedVariable
רזולוציה
מוודאים שהמשתנה שבו נעשה שימוש במדיניות BasicAuthentication מוגדר או מועבר כקלט, וזמין בתהליך שבו המדיניות מתבצעת.
כדי לתקן את הבעיה בדוגמה של המדיניות BasicAuthentication שצוינה למעלה, צריך להגיש בקשת API לפי השלבים הבאים:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
InvalidBasicAuthenticationSource
קוד שגיאה
steps.basicauthentication.InvalidBasicAuthenticationSource
גוף התשובה לשגיאה
{
"fault": {
"faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
הודעת שגיאה לדוגמה
{
"fault": {
"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
"detail": {
"errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
}
}
}
גורמים אפשריים
הסיבות האפשריות לשגיאה הזו הן:
סיבה | תיאור |
---|---|
משתנה מקור לא חוקי | משתנה מקור הקלט למדיניות BasicAuthentication אינו מחרוזת חוקית בקידוד Base64. |
הכותרת בפורמט שגוי | הכותרת שמכילה את המחרוזת בקידוד Base64 שהועברה למדיניות BasicAuthentication שגויה. |
הסיבה: משתנה מקור לא חוקי
השגיאה הזו מתרחשת אם המשתנה שמכיל את המחרוזת בקידוד Base64 שצוין ברכיב <Source>
של מדיניות BasicAuthentication לא מכיל ערך חוקי.
לדוגמה, השגיאה הזו מתרחשת אם למשתנה שצוין ברכיב <Source>
של מדיניות BasicAuthentication אין מחרוזת בקידוד Base64 חוקית.
אבחון
מזהים את המשתנה שמשמש לרכיב
<Source>
במדיניות BasicAuthentication. המידע הזה מופיע ברכיבfaultstring
של תגובת השגיאה. לדוגמה, ב-faultstring,
הבא, המשתנה שמשמש לרכיב<Source>
הואrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
לבדוק את כל כללי המדיניות של BasicAuthentication ב-Proxy ל-API הספציפי שבו התרחש הכשל. יכול להיות שיש מדיניות אחת או יותר של אימות בסיסי. צריך לזהות את המדיניות הספציפית של BasicAuthentication (ies) שבה המשתנה שצוין ברכיב
<Source>
תואם לשם המשתנה שזוהה במחרוזת השגיאה (שלב 1 למעלה).לדוגמה, המדיניות הבאה מגדירה את הרכיב
<Source>
כמשתנה בשםrequest.header.Authorization
, שתואם לערך בשדהfaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <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>
אם הערך שמאוחסן במשתנה שצוין ברכיב
<Source>
אינו מחרוזת חוקית בקידוד Base64,זו הסיבה לשגיאה.
בדוגמה של מדיניות BasicAuthentication שמוצגת למעלה, המשתנה
request.header.Authorization
שנשלח על ידי הלקוח ככותרת לא היה תקין כמו בדוגמה הבאה:curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic 23435"
מכיוון שהמשתנה
request.header.Authorization
מכיל מחרוזת לא חוקית בקידוד Base64 '23435"
', תקבלו את קוד השגיאה:steps.basicauthentication.InvalidBasicAuthenticationSource
רזולוציה
מוודאים שלמשתנה שצוין לרכיב <Source>
במדיניות BasicAuthentication יש מחרוזת בקידוד Base64 חוקית.
כדי לתקן את הבעיה במדיניות BasicAuthentication שצוינה למעלה, יש לשלוח בקשת API על ידי העברת מחרוזת חוקית בקידוד Base64 בכותרת Authorization כפי שמוצג בהמשך:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
הסיבה: הכותרת שגויה או לא תקינה
השגיאה הזו מתקבלת אם הכותרת שהועברה אל BasicAuthentication policy לא נכונה או שהכותרת לא תקינה.
לדוגמה, השגיאה הזו מתרחשת אם המדיניות BasicAuthentication כוללת משתנה שצוין בתור request.header.Authorization
ברכיב <Source>
, והכותרת שהועברה כחלק מבקשת ה-API שגויה/לא חוקית.
אבחון
מזהים את המשתנה שמשמש לרכיב
<Source>
במדיניות BasicAuthentication. המידע הזה מופיע ברכיבfaultstring
של תגובת השגיאה. לדוגמה, בשגיאה הבאה, המשתנה שמשמש לרכיב<Source>
הואrequest.header.Authorization
:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
לבדוק את כל כללי המדיניות של BasicAuthentication ב-Proxy ל-API הספציפי שבו התרחשה הכשל. יכול להיות שיש מדיניות אחת או יותר של אימות בסיסי. צריך לזהות את המדיניות הספציפית של BasicAuthentication (ies) שבה המשתנה שצוין ברכיב
<Source>
תואם לשם המשתנה שזוהה במחרוזת השגיאה (שלב 1 למעלה).לדוגמה, המדיניות הבאה מגדירה את הרכיב
<Source>
כמשתנה בשםrequest.header.Authorization
, שתואם לערך בשדהfaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <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: <Authentication type> <credentials>
אפשר להעביר כותרת פגומה למדיניות BasicAuthentication בשתי דרכים:
דוגמה 1: אין סוג אימות בכותרת:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
בדוגמה שלמעלה, הכותרת Authorization לא כוללת את סוג האימות. אם הכותרת הזו מועברת למדיניות BasicAuthentication שמוצגת למעלה, תקבלו את קוד השגיאה:
steps.basicauthentication.InvalidBasicAuthenticationSource
דוגמה 2: סוג האימות אינו מסוג 'בסיסי':
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
בדוגמה שלמעלה, סוג האימות לא מופיע בכותרת Authorization בתור 'Basic' (בסיסי). אם תועברו למדיניות BasicAuthentication שמוצגת למעלה, תקבלו את קוד השגיאה:
steps.basicauthentication.InvalidBasicAuthenticationSource
באופן דומה, השגיאה הזו יכולה להתרחש גם אם נעשה שימוש בסוג האימות כמו נושא, Digest Auth וכו' בכותרת Authorization.
רזולוציה
צריך לוודא שהכותרת שבה הועבר הקלט למדיניות BasicAuthentication כוללת את סוג האימות שהיא מסוג 'בסיסי'.
כדי לפתור את הבעיה במדיניות BasicAuthentication שצוינה למעלה, יש לשלוח בקשת API על-ידי העברת מחרוזת חוקית בקידוד Base64 עם הערך "Basic". סוג האימות בכותרת Authorization כפי שמוצג בהמשך:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"