שימוש ב-IdP חיצוני עם ממשק Edge Management API

אימות בסיסי הוא אחת מהדרכים לאימות כשמבצעים קריאות ל-Edge management API. לדוגמה, אפשר לשלוח את הבקשה הבאה של curl ל-Edge management API כדי לגשת למידע על הארגון:

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

בדוגמה הזו, משתמשים באפשרות curl -u כדי להעביר פרטי כניסה לאימות בסיסי. לחלופין, אפשר להעביר אסימון OAuth2 בכותרת Bearer כדי לבצע קריאות ל-Edge management API, כמו בדוגמה הבאה:

curl -H "Authorization: Bearer access_token" https://ms_IP_DNS:8080/v1/organizations/orgName

אחרי שמפעילים IdP חיצוני לאימות, אפשר להשבית את האימות הבסיסי. אם משביתים את האימות הבסיסי, כל הסקריפטים (כמו Maven,‏ shell ו-apigeetool) שמסתמכים על קריאות ל-Edge management API שתומכות באימות בסיסי לא יפעלו יותר. צריך לעדכן את כל הקריאות ל-API והסקריפטים שמשתמשים באימות בסיסי כדי להעביר טוקני גישה של OAuth2 בכותרת Bearer.

איך מקבלים ומרעננים טוקנים באמצעות get_token

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

הכלי get_token מאחסן את האסימונים בדיסק, והם מוכנים לשימוש כשצריך. היא גם מדפיסה טוקן גישה תקין ל-stdout. משם, אתם יכולים להשתמש בתוסף לדפדפן כמו Postman או להטמיע אותו במשתנה סביבה לשימוש ב-curl.

כדי לקבל אסימון גישה מסוג OAuth2 לביצוע קריאות ל-Edge Management API:

  1. מורידים את החבילה של sso-cli:
    curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    כאשר edge_sso_IP_DNS הוא כתובת ה-IP או שם ה-DNS של המכונה שמארחת את מודול ה-SSO ב-Apigee. אם הגדרתם TLS במודול SSO ב-Apigee, השתמשו ב-https ובמספר היציאה הנכון של TLS.

  2. מבטלים את הדחיסה של החבילה ssocli-bundle.zip, כמו בדוגמה הבאה:
    unzip ssocli-bundle.zip
  3. מתקינים את get_token ב-/usr/local/bin, כמו בדוגמה הבאה:
    ./install -b path

    האפשרות -b מציינת מיקום אחר.

  4. מגדירים את משתנה הסביבה SSO_LOGIN_URL לכתובת ה-URL להתחברות, בפורמט הבא:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    כאשר edge_sso_IP_DNS היא כתובת ה-IP של המכונה שמארחת את מודול ה-SSO ב-Apigee. אם הגדרתם TLS ב-מודול SSO ב-Apigee, השתמשו ב-https ובמספר היציאה הנכון של TLS.

  5. (SAML בלבד) בדפדפן, עוברים לכתובת ה-URL הבאה כדי לקבל קוד גישה חד-פעמי:
    http://edge_sso_IP_DNS:9099/passcode

    אם הגדרתם TLS ב-מודול SSO ב-Apigee, השתמשו ב-https ובמספר היציאה הנכון של TLS.

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

    שימו לב שאפשר להשתמש בקוד גישה רק כשמבצעים אימות באמצעות ספק זהויות (IdP) של SAML. אי אפשר להשתמש בקוד גישה כדי לבצע אימות באמצעות ספק זהויות LDAP.

  6. מפעילים את get_token כדי לקבל את טוקן הגישה של OAuth2, כמו בדוגמה הבאה:
    get_token -u emailAddress

    כאשר emailAddress הוא כתובת האימייל של משתמש ב-Edge.

    (SAML בלבד) מזינים את קוד הגישה בשורת הפקודה בנוסף לכתובת האימייל, כמו בדוגמה הבאה:

    get_token -u emailAddress -p passcode

    ‫הכלי get_token מקבל את טוקן הגישה של OAuth2, מדפיס אותו במסך וכותב אותו ואת טוקן הרענון בקובץ ~/.sso-cli.

  7. מעבירים את אסימון הגישה לקריאה ל-API לניהול של Edge בתור הכותרת Bearer, כמו בדוגמה הבאה:
    curl -H "Authorization: Bearer access_token"
      https://ms_IP:8080/v1/organizations/orgName
  8. אחרי שמקבלים אסימון גישה חדש בפעם הראשונה, אפשר לקבל את אסימון הגישה ולהעביר אותו לקריאה ל-API בפקודה אחת, כמו בדוגמה הבאה:
    header=`get_token` && curl -H "Authorization: Bearer $header"
      https://ms_IP:8080/v1/o/orgName

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

(SAML בלבד) אחרי שתוקף טוקן הרענון פג, get_token מבקש קוד גישה חדש. כדי ליצור אסימון גישה חדש ל-OAuth, צריך לעבור לכתובת ה-URL שמופיעה בשלב 3 וליצור קוד גישה חדש.

שימוש ב-Management API כדי לקבל ולרענן טוקנים

במאמר שימוש באבטחת OAuth2 עם ה-API לניהול של Apigee Edge מוסבר איך משתמשים ב-API לניהול של Edge כדי לקבל ולרענן טוקנים. אפשר גם להשתמש בקריאות ל-Edge API כדי לקבל אסימונים שנוצרו מטענות נכונות (assertions) של SAML.

ההבדל היחיד בין הקריאות ל-API שמתועדות במאמר Using OAuth2 security with the Apigee Edge management API הוא שכתובת ה-URL של הקריאה צריכה להפנות לשם האזור שלכם. בנוסף, כדי ליצור את טוקן הגישה הראשוני באמצעות SAML IDP, צריך לכלול את קוד הגישה, כמו שמוצג בשלב 3 של התהליך שלמעלה.

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

קבלת טוקן גישה

‫(LDAP) משתמשים בקריאה הבאה ל-API כדי ליצור את טוקן הגישה הראשוני וטוקן הרענון:

curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" /
  -H "accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token -s /
  -d 'grant_type=password&response_type=token'

‫(SAML) משתמשים בקריאה הבאה ל-API כדי ליצור את טוקן הגישה הראשוני וטוקן הרענון:

curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" /
  -H "accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token -s /
  -d 'grant_type=password&response_type=token&passcode=passcode'

שימו לב שאימות באמצעות SAML IDP דורש קוד סיסמה זמני, אבל אימות באמצעות LDAP IDP לא דורש קוד סיסמה זמני.

רענון של טוקן גישה

כדי לרענן את אסימון הגישה בהמשך, משתמשים בקריאה הבאה שכוללת את אסימון הרענון:

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" /
  -H "Accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token /
  -d 'grant_type=refresh_token&refresh_token=refreshToken'