מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
מה
מקבלת מאפיינים של אסימוני גישה, אסימוני רענון, קודי הרשאות ואפליקציית לקוח ומאכלס את המשתנים בערכים של המאפיינים האלה.
המדיניות הזו שימושית כשצריך להגדיר התנהגות דינמית ומותנית על סמך ערך באסימון או בקוד אימות. בכל פעם שאימות האסימון מתבצע, המשתנים מאוכלסים באופן אוטומטי עם הערכים של מאפייני האסימון. עם זאת, במקרים שבהם לא בוצע אימות אסימון, עליך יכולים להשתמש בתכונה הזו כדי לאכלס באופן מפורש משתנים עם ערכי המאפיינים של אסימון. עוד באותו הקשר התאמה אישית של אסימונים קודי הרשאות.
אסימון הגישה שאתם מעבירים למדיניות הזו חייב להיות תקף, אחרת המדיניות תציג
שגיאה אחת (invalid_access_token
).
דוגמאות
בדוגמאות הבאות משולבת המדיניות 'קבלת מידע על OAuth V2' כדי לאחזר מידע על אחרים של תהליך העבודה של OAuth2, ואז לגשת למידע הזה בתוך הקוד.
אסימון גישה
כדי לקבל הפניה לאסימון גישה, צריך להשתמש ברכיב <AccessToken>
המדיניות שלכם.
הדוגמה הבאה מצפה למצוא את אסימון הגישה בפרמטר של שאילתה בשם "access_token" (פרטי ההטמעה בפועל תלויים בכם):
<GetOAuthV2Info name="MyTokenAttrsPolicy"> <AccessToken ref="request.queryparam.access_token"></AccessToken> </GetOAuthV2Info>
בהינתן אסימון הגישה, המדיניות מחפשת את פרופיל האסימון ומאכלסת קבוצה משתנים בהתאם לנתוני הפרופיל.
לאחר מכן תוכלו לגשת למשתנים באמצעות JavaScript או אמצעים אחרים. הדוגמה הבאה מאחזרת את היקפי ההרשאות המשויכים לאסימון הגישה באמצעות JavaScript:
var scope = context.getVariable('oauthv2accesstoken.MyTokenAttrsPolicy.scope');
שימו לב שכדי לגשת למשתנים האלה בקוד, צריך להוסיף להם תחילית 'oauthv2accesstoken'. רשימה מלאה של המשתנים הזמינים באמצעות אסימון הגישה זמינה בכתובת משתנים של אסימוני גישה.
קוד אימות
כדי לקבל מאפיינים של קוד הרשאה, צריך להשתמש בפונקציה <AuthorizationCode>
במדיניות.
הדוגמה הבאה מצפה למצוא את אסימון הגישה בטופס פרמטר בשם "code" (פרטי ההטמעה בפועל תלויים בכם):
<GetOAuthV2Info name="MyAuthCodeAttrsPolicy"> <AuthorizationCode ref="request.formparam.code"></AuthorizationCode> </GetOAuthV2Info>
בהינתן קוד ההרשאה, המדיניות מחפשת את פרטי הקוד ומאכלסת קבוצה עם הנתונים של קוד ההרשאה.
לאחר מכן תוכלו לגשת למשתנים באמצעות JavaScript או אמצעים אחרים. הדוגמה הבאה מאחזרת מאפיין מותאם אישית המשויך לקוד ההרשאה באמצעות JavaScript:
var attr = context.getVariable(‘oauthv2authcode.MyAuthCodeAttrsPolicy.custom_attribute_name’);
שימו לב שכדי לגשת למשתנים האלה בקוד, צריך להוסיף להם את הקידומת 'oauthv2authcode'. רשימה מלאה של המשתנים שזמינים דרך קוד ההרשאה מופיעה בכתובת משתני קוד הרשאות.
רענון האסימון
כדי לקבל מאפיינים של אסימון רענון, צריך להשתמש ברכיב <RefreshToken>
המדיניות בנושא
הדוגמה הבאה מצפה למצוא את אסימון הגישה בפרמטר של שאילתה בשם "refresh_token" (פרטי ההטמעה בפועל תלויים בכם):
<GetOAuthV2Info name="MyRefreshTokenAttrsPolicy"> <RefreshToken ref="request.queryparam.refresh_token"/> </GetOAuthV2Info>
בגלל אסימון הרענון, המדיניות מחפשת את הפרטים של אסימון הרענון ומאכלסת אותו קבוצת משתנים עם הנתונים של אסימון הרענון.
לאחר מכן תוכלו לגשת למשתנים האלה באמצעות JavaScript או אמצעים אחרים. הבאים הדוגמה מאחזרת מאפיין מותאם אישית המשויך לאסימון הרענון באמצעות JavaScript:
var attr = context.getVariable(‘oauthv2refreshtoken.MyRefreshTokenAttrsPolicy.accesstoken.custom_attribute_name’);
שימו לב שכדי לגשת למשתנים בקוד צריך להוסיף קידומת 'oauthv2refreshtoken'. רשימה מלאה של המשתנים שזמינים באמצעות אסימון הרענון זמינה בכתובת רענון של משתני אסימון.
סטטי
במקרים נדירים ייתכן שתצטרכו לקבל את הפרופיל של אסימון שהוגדר באופן סטטי ( שאי אפשר לגשת אליו באמצעות משתנה). כדי לעשות זאת, ציינו את הערך של אסימון גישה כרכיב.
<GetOAuthV2Info name="GetTokenAttributes"> <AccessToken>shTUmeI1geSKin0TODcGLXBNe9vp</AccessToken> </GetOAuthV2Info>
אפשר לעשות זאת עם כל סוגי האסימונים האחרים (מזהה לקוח, קוד הרשאה ורענון) אסימונים).
Client-ID
בדוגמה הזו מוסבר איך לאחזר מידע על אפליקציית הלקוח באמצעות מזהה הלקוח.
לאחר הביצוע, המדיניות מאכלסת קבוצת משתנים עם פרטי הלקוח. כאן
המדיניות מצפה למצוא את מזהה הלקוח בפרמטר של השאילתה
שנקרא client_id
. בהתאם למזהה הלקוח, המדיניות מחפשת
ומאכלס קבוצת משתנים בנתוני הפרופיל. המשתנים יהיו
התחילית של oauthv2client.
<GetOAuthV2Info name="GetClientAttributes"> <ClientId ref="request.queryparam.client_id"></ClientId> </GetOAuthV2Info>
לאחר מכן תוכלו לגשת למשתנים באמצעות JavaScript או אמצעים אחרים. לדוגמה, כדי לקבל השם של אפליקציית המפתח וכתובת האימייל של המפתח שמשויכים לאפליקציית הלקוח באמצעות JavaScript:
context.getVariable("oauthv2client.GetClientAttributes.developer.email"); context.getVariable("oauthv2client.GetClientAttributes.developer.app.name");
מסמך עזר של רכיב
בהפניה לרכיב מתוארים הרכיבים והמאפיינים של מדיניות GetOAuthV2Info.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="GetOAuthV2Info-1" <DisplayName>Get OAuth v2.0 Info 1</DisplayName> <AccessToken ref="variable"></AccessToken> <AuthorizationCode ref="variable"></AuthorizationCode> <ClientId ref="variable"></ClientId> <RefreshToken ref="variable"></RefreshToken> </GetOAuthV2Info>
<GetOAuthV2Info> מאפיינים
<GetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Get-OAuth-v20-Info-1">
בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
name |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
צריך להגדיר את הערך יש להגדיר ל- |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
<DisplayName> רכיב
צריך להשתמש בנוסף למאפיין name
כדי להוסיף תווית למדיניות
עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, הערך של המאפיין |
---|---|
נוכחות | אופציונלי |
סוג | מחרוזת |
<AccessToken> רכיב
אחזור הפרופיל של אסימון גישה. אתם מעבירים כל משתנה שמכיל את מחרוזת של אסימון גישה או מחרוזת מילולית של אסימון (מקרה נדיר). בדוגמה הזו, אסימון הגישה הוא מאוחזר מפרמטר של שאילתה שהועבר בבקשה. משתמשים ב-<ignoreAccessTokenStatus> אם רוצים להחזיר מידע לגבי אסימון שבוטל או התוקף שלו פג.
<AccessToken ref="request.queryparam.access_token"></AccessToken>
ברירת המחדל: |
request.formparam.access_token (קובץ x-www-form-urlencoded ומצוין בבקשה גוף ההודעה) |
נוכחות: |
אופציונלי |
סוג: | מחרוזת |
ערכים חוקיים: |
משתנה זרימה שמכיל מחרוזת של אסימון גישה או מחרוזת מילולית. |
<AuthorizationCode> רכיב
אחזור הפרופיל של קוד הרשאה. אתם מעבירים משתנה שמכיל מחרוזת קוד ההרשאה או מחרוזת מילולית של אסימון (מקרה נדיר). בדוגמה הזו, קוד ההרשאה הוא מאוחזר מפרמטר של שאילתה שהועבר בבקשה. לרשימת משתנים שאוכלסו על ידי מידע נוסף, ראו "משתני זרימה".
<AuthorizationCode ref="request.queryparam.authorization_code"></AuthorizationCode>
ברירת המחדל: |
request.formparam.access_token (קובץ x-www-form-urlencoded ומצוין בבקשה גוף ההודעה) |
נוכחות: |
אופציונלי |
סוג: | מחרוזת |
ערכים חוקיים: |
משתנה זרימה שמכיל מחרוזת של קוד הרשאה או מחרוזת מילולית. |
<ClientId> רכיב
מאחזרת מידע שקשור למזהה לקוח. בדוגמה הזו מתבצע אחזור של מזהה הלקוח מפרמטר של שאילתה שמועבר בבקשה. לרשימת משתנים שאוכלסו על ידי הפעולה הזו, ראו משתני זרימה.
<ClientId ref="request.queryparam.client_id"></ClientId>
ברירת המחדל: |
request.formparam.access_token (קובץ x-www-form-urlencoded ומצוין בבקשה גוף ההודעה) |
נוכחות: |
אופציונלי |
סוג: | מחרוזת |
ערכים חוקיים: | משתנה זרימה שמכיל מחרוזת של קוד הרשאה או מחרוזת מילולית. |
<IgnoreAccessTokenStatus> רכיב
מחזירה את פרטי האסימון גם אם פג תוקפו של האסימון או אם הוא בוטל. הרכיב הזה יכול רק לשימוש עם אסימוני גישה. מידע לגבי ישויות אחרות, כמו אסימוני רענון והרשאות כברירת מחדל, מוחזרים קודים ללא קשר לסטטוס שלהם.
<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>
ברירת המחדל: |
false |
נוכחות: |
אופציונלי |
סוג: | ערך בוליאני |
ערכים חוקיים: | true או false |
<RefreshToken> רכיב
אחזור הפרופיל של אסימון רענון. אתם מעבירים כל משתנה שמכיל את מחרוזת אסימון רענון או מחרוזת מילולית של אסימון (מקרה נדיר). בדוגמה זו, אסימון הרענון מאוחזר מפרמטר של שאילתה שהועבר בבקשה. לרשימת משתנים שאוכלסו על ידי מידע נוסף, ראו "משתני זרימה".
<RefreshToken ref="request.queryparam.refresh_token"></RefreshToken>
ברירת המחדל: |
request.formparam.access_token (קובץ x-www-form-urlencoded ומצוין בבקשה גוף ההודעה) |
נוכחות: |
אופציונלי |
סוג: | מחרוזת |
ערכים חוקיים: |
משתנה זרימה שמכיל מחרוזת של אסימון רענון, או מחרוזת מילולית. |
משתני זרימה
המדיניות GetOAuthV2Info מאכלסת את המשתנים האלה, ובדרך כלל נעשה בה שימוש במקרים שבהם צריכים את נתוני הפרופיל, אבל עדיין לא בוצעו הענקות או אימות. .
משתנים של Client-ID
המשתנים האלה מאוכלסים כשמוגדר רכיב ClientId:
oauthv2client.{policy_name}.client_id oauthv2client.{policy_name}.client_secret oauthv2client.{policy_name}.redirection_uris // Note the spelling -- 'redirection_uris' oauthv2client.{policy_name}.developer.email oauthv2client.{policy_name}.developer.app.name oauthv2client.{policy_name}.developer.id oauthv2client.{policy_name}.{developer_app_custom_attribute_name}
משתנים של אסימון גישה
המשתנים האלה מאוכלסים כשמוגדר רכיב AccessToken:
oauthv2accesstoken.{policy_name}.developer.id oauthv2accesstoken.{policy_name}.developer.app.name oauthv2accesstoken.{policy_name}.developer.app.id oauthv2accesstoken.{policy_name}.developer.email oauthv2accesstoken.{policy_name}.organization_name oauthv2accesstoken.{policy_name}.api_product_list oauthv2accesstoken.{policy_name}.access_token oauthv2accesstoken.{policy_name}.scope oauthv2accesstoken.{policy_name}.expires_in //in seconds oauthv2accesstoken.{policy_name}.status oauthv2accesstoken.{policy_name}.client_id oauthv2accesstoken.{policy_name}.accesstoken.{custom_attribute_name} oauthv2accesstoken.{policy_name}.refresh_token oauthv2accesstoken.{policy_name}.refresh_token_status oauthv2accesstoken.{policy_name}.refresh_token_expires_in //in seconds oauthv2accesstoken.{policy_name}.refresh_count oauthv2accesstoken.{policy_name}.refresh_token_issued_at oauthv2accesstoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED
משתני קוד ההרשאות
המשתנים האלה מאוכלסים כשמוגדר הרכיב AuthorizationCode:
oauthv2authcode.{policy_name}.code oauthv2authcode.{policy_name}.scope oauthv2authcode.{policy_name}.redirect_uri oauthv2authcode.{policy_name}.client_id oauthv2authcode.{policy_name}.{auth_code_custom_attribute_name}
רענון המשתנים של האסימון
המשתנים האלה מאוכלסים כשמוגדר רכיב RefreshToken:
oauthv2refreshtoken.{policy_name}.developer.id oauthv2refreshtoken.{policy_name}.developer.app.name oauthv2refreshtoken.{policy_name}.developer.app.id oauthv2refreshtoken.{policy_name}.developer.email oauthv2refreshtoken.{policy_name}.organization_name oauthv2refreshtoken.{policy_name}.api_product_list oauthv2refreshtoken.{policy_name}.access_token oauthv2refreshtoken.{policy_name}.scope oauthv2refreshtoken.{policy_name}.expires_in //in seconds oauthv2refreshtoken.{policy_name}.status oauthv2refreshtoken.{policy_name}.client_id oauthv2refreshtoken.{policy_name}.accesstoken.{custom_attribute_name} oauthv2refreshtoken.{policy_name}.refresh_token oauthv2refreshtoken.{policy_name}.refresh_token_status oauthv2refreshtoken.{policy_name}.refresh_token_expires_in //in seconds oauthv2refreshtoken.{policy_name}.refresh_count oauthv2refreshtoken.{policy_name}.refresh_token_issued_at oauthv2refreshtoken.{policy_name}.revoke_reason //Apigee hybrid only with value of REVOKED_BY_APP, REVOKED_BY_ENDUSER, REVOKED_BY_APP_ENDUSER, or TOKEN_REVOKED
סכימה
כל סוג מדיניות מוגדר על ידי סכימת XML (.xsd
). לידיעתך, סכימות של מדיניות
זמינים ב-GitHub.
התייחסות לשגיאות
בקטע הזה מתוארים קודי השגיאה והודעות השגיאה שהוחזרו, ומשתני התקלה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת את המידע הזה אם אתם מפתחים כללי כשל כדי לטפל בתקלות. מידע נוסף זמין במאמר מה צריך לדעת? מידע על שגיאות שקשורות למדיניות וטיפול פגמים.
שגיאות זמן ריצה
השגיאות האלה עשויות להתרחש כשהמדיניות מופעלת. שמות השגיאות שמוצגים בהמשך הם המחרוזות
שמוקצות למשתנה fault.name
כשמתרחשת שגיאה. רואים את הטעות
לקבלת פרטים נוספים.
קוד תקלה | סטטוס HTTP | סיבה |
---|---|---|
steps.oauth.v2.access_token_expired |
500 | פג התוקף של אסימון הגישה שנשלח למדיניות. |
steps.oauth.v2.authorization_code_expired |
500 | קוד ההרשאה שנשלח למדיניות כבר לא בתוקף. |
steps.oauth.v2.invalid_access_token |
500 | אסימון הגישה שנשלח למדיניות לא חוקי. |
steps.oauth.v2.invalid_client-invalid_client_id |
500 | מזהה הלקוח שנשלח למדיניות לא תקין. |
steps.oauth.v2.invalid_refresh_token |
500 | אסימון הרענון שנשלח למדיניות לא חוקי. |
steps.oauth.v2.invalid_request-authorization_code_invalid |
500 | קוד ההרשאה שנשלח למדיניות לא תקין. |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 | מומלץ לעיין ב- בפוסט הזה בקהילה של Apigee אפשר למצוא מידע על פתרון בעיות בשגיאה הזו. |
steps.oauth.v2.refresh_token_expired |
500 | פג התוקף של אסימון הרענון שנשלח למדיניות. |
שגיאות פריסה
יש לעיין בהודעה שדווחה בממשק המשתמש לקבלת מידע על שגיאות פריסה.
משתני כשל
המשתנים האלה מוגדרים כשהמדיניות הזו גורמת לשגיאה בזמן הריצה.
משתנים | איפה | דוגמה |
---|---|---|
fault.name="fault_name" |
fault_name הוא שם השגיאה, כפי שמצוין בטבלה שגיאות זמן ריצה שלמעלה. שם השגיאה הוא החלק האחרון בקוד השגיאה. | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name הוא השם שצוין על ידי המשתמש של המדיניות שגרמה לבעיה. | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name הוא השם שצוין על ידי המשתמש של המדיניות שגרמה לבעיה. | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name הוא השם שצוין על ידי המשתמש של המדיניות שגרמה לבעיה. | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
דוגמה לתגובת שגיאה
{ "fault":{ "faultstring":"ClientId is Invalid", "detail":{ "errorcode":"keymanagement.service.invalid_client-invalid_client_id" } } }
דוגמה לכלל שגוי
<FaultRule name="OAuthV2 Faults"> <Step> <Name>AM-InvalidClientIdResponse</Name> </Step> <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition> </FaultRule>