מדיניות OAuthOAuthV2Info

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

מה

מקבלת מאפיינים של אסימוני גישה, אסימוני רענון, קודי הרשאות ואפליקציית לקוח ומאכלס את המשתנים בערכים של המאפיינים האלה.

המדיניות הזו שימושית כשצריך להגדיר התנהגות דינמית ומותנית על סמך ערך באסימון או בקוד אימות. בכל פעם שאימות האסימון מתבצע, המשתנים מאוכלסים באופן אוטומטי עם הערכים של מאפייני האסימון. עם זאת, במקרים שבהם לא בוצע אימות אסימון, עליך יכולים להשתמש בתכונה הזו כדי לאכלס באופן מפורש משתנים עם ערכי המאפיינים של אסימון. עוד באותו הקשר התאמה אישית של אסימונים קודי הרשאות.

אסימון הגישה שאתם מעבירים למדיניות הזו חייב להיות תקף, אחרת המדיניות תציג שגיאה אחת (invalid_access_token).

דוגמאות

בדוגמאות הבאות משולבת המדיניות 'קבלת מידע על OAuth V2' כדי לאחזר מידע על אחרים של תהליך העבודה של OAuth2, ואז לגשת למידע הזה בתוך הקוד.

אסימון גישה

כדי לקבל הפניה לאסימון גישה, צריך להשתמש ברכיב <AccessToken> המדיניות שלכם.

הדוגמה הבאה מצפה למצוא את אסימון הגישה בפרמטר של שאילתה בשם &quot;access_token&quot; (פרטי ההטמעה בפועל תלויים בכם):

<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> המדיניות בנושא

הדוגמה הבאה מצפה למצוא את אסימון הגישה בפרמטר של שאילתה בשם &quot;refresh_token&quot; (פרטי ההטמעה בפועל תלויים בכם):

<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

השם הפנימי של המדיניות. הערך של המאפיין name יכול לכלול אותיות, מספרים, רווחים, מקפים, קווים תחתונים ונקודות. הערך הזה לא יכול ארוך מ-255 תווים.

אפשר להשתמש ברכיב <DisplayName> כדי להוסיף תווית למדיניות עורך ה-Proxy של ממשק המשתמש לניהול בעל שם אחר בשפה טבעית.

לא רלוונטי חובה
continueOnError

צריך להגדיר את הערך false כדי להחזיר שגיאה כשמדיניות נכשלת. המצב הזה צפוי של רוב כללי המדיניות.

יש להגדיר ל-true כדי שביצוע התהליך יימשך גם לאחר המדיניות נכשל.

false אופציונלי
enabled

צריך להגדיר את הערך true כדי לאכוף את המדיניות.

צריך להגדיר את הערך false כדי להשבית את המדיניות. המדיניות לא תהיה אכיפה גם אם היא ממשיכה להיות מחוברת לזרימה.

true אופציונלי
async

המאפיין הזה הוצא משימוש.

false הוצא משימוש

&lt;DisplayName&gt; רכיב

צריך להשתמש בנוסף למאפיין name כדי להוסיף תווית למדיניות עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.

<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל

לא רלוונטי

אם משמיטים את הרכיב הזה, הערך של המאפיין name של המדיניות הוא בשימוש.

נוכחות אופציונלי
סוג מחרוזת

&lt;AccessToken&gt; רכיב

אחזור הפרופיל של אסימון גישה. אתם מעבירים כל משתנה שמכיל את מחרוזת של אסימון גישה או מחרוזת מילולית של אסימון (מקרה נדיר). בדוגמה הזו, אסימון הגישה הוא מאוחזר מפרמטר של שאילתה שהועבר בבקשה. משתמשים ב-<ignoreAccessTokenStatus> אם רוצים להחזיר מידע לגבי אסימון שבוטל או התוקף שלו פג.

<AccessToken ref="request.queryparam.access_token"></AccessToken>

ברירת המחדל:

request.formparam.access_token (קובץ x-www-form-urlencoded ומצוין בבקשה גוף ההודעה)

נוכחות:

אופציונלי

סוג: מחרוזת
ערכים חוקיים:

משתנה זרימה שמכיל מחרוזת של אסימון גישה או מחרוזת מילולית.


&lt;AuthorizationCode&gt; רכיב

אחזור הפרופיל של קוד הרשאה. אתם מעבירים משתנה שמכיל מחרוזת קוד ההרשאה או מחרוזת מילולית של אסימון (מקרה נדיר). בדוגמה הזו, קוד ההרשאה הוא מאוחזר מפרמטר של שאילתה שהועבר בבקשה. לרשימת משתנים שאוכלסו על ידי מידע נוסף, ראו "משתני זרימה".

<AuthorizationCode ref="request.queryparam.authorization_code"></AuthorizationCode>

ברירת המחדל:

request.formparam.access_token (קובץ x-www-form-urlencoded ומצוין בבקשה גוף ההודעה)

נוכחות:

אופציונלי

סוג: מחרוזת
ערכים חוקיים:

משתנה זרימה שמכיל מחרוזת של קוד הרשאה או מחרוזת מילולית.

&lt;ClientId&gt; רכיב

מאחזרת מידע שקשור למזהה לקוח. בדוגמה הזו מתבצע אחזור של מזהה הלקוח מפרמטר של שאילתה שמועבר בבקשה. לרשימת משתנים שאוכלסו על ידי הפעולה הזו, ראו משתני זרימה.

<ClientId ref="request.queryparam.client_id"></ClientId>

ברירת המחדל:

request.formparam.access_token (קובץ x-www-form-urlencoded ומצוין בבקשה גוף ההודעה)

נוכחות:

אופציונלי

סוג: מחרוזת
ערכים חוקיים: משתנה זרימה שמכיל מחרוזת של קוד הרשאה או מחרוזת מילולית.

&lt;IgnoreAccessTokenStatus&gt; רכיב

מחזירה את פרטי האסימון גם אם פג תוקפו של האסימון או אם הוא בוטל. הרכיב הזה יכול רק לשימוש עם אסימוני גישה. מידע לגבי ישויות אחרות, כמו אסימוני רענון והרשאות כברירת מחדל, מוחזרים קודים ללא קשר לסטטוס שלהם.

<IgnoreAccessTokenStatus>true</IgnoreAccessTokenStatus>

ברירת המחדל:

false

נוכחות:

אופציונלי

סוג: ערך בוליאני
ערכים חוקיים: true או false

&lt;RefreshToken&gt; רכיב

אחזור הפרופיל של אסימון רענון. אתם מעבירים כל משתנה שמכיל את מחרוזת אסימון רענון או מחרוזת מילולית של אסימון (מקרה נדיר). בדוגמה זו, אסימון הרענון מאוחזר מפרמטר של שאילתה שהועבר בבקשה. לרשימת משתנים שאוכלסו על ידי מידע נוסף, ראו "משתני זרימה".

<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>

נושאים קשורים