שימוש ב-SAML עם Edge Management API

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

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

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

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

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

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

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

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

כך משתמשים ב-get_token כדי לקבל אסימון גישה מסוג 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 של Edge. אם הגדרתם TLS ב-Edge SSO, השתמשו ב-https ובמספר היציאה הנכון של TLS.

  2. מבטלים את הדחיסה של החבילה ssocli-bundle.zip:
    unzip ssocli-bundle.zip
  3. מתקינים את get_token ב-‎/usr/local/bin:
    ‎> ./install משתמשים באפשרות ‎-b כדי לציין מיקום אחר: ‎> ./install -b path
  4. מגדירים את משתנה הסביבה SSO_LOGIN_URL לכתובת ה-URL להתחברות, בפורמט:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    כאשר edge_sso_IP_DNS הוא כתובת ה-IP של שם ה-DNS של המכונה שמארחת את מודול Edge SSO. אם הגדרתם TLS ב-Edge SSO, השתמשו ב-https ובמספר היציאה הנכון של TLS.
  5. בדפדפן, עוברים לכתובת ה-URL הבאה כדי לקבל קוד סיסמה חד-פעמי:
    http://edge_sso_IP_DNS:9099/passcode

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

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

    כתובת ה-URL הזו מחזירה קוד סיסמה חד-פעמי שנשאר בתוקף עד שמרעננים את כתובת ה-URL כדי לקבל קוד סיסמה חדש, או עד שמשתמשים בקוד הסיסמה עם get_token כדי ליצור אסימון גישה.
  6. מפעילים את get_token כדי לקבל את אסימון הגישה של OAuth2:
    > get_token -u emailAddress

    כאשר emailAddress היא כתובת האימייל של משתמש Edge. תתבקשו להזין את קוד הגישה החד-פעמי שקיבלתם בשלב 3:
    One Time Code ( Get one at https://edge_sso_IP.com/passcode )
    Enter the passcode if SAML is enabled or press ENTER:


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

    אפשר להזין את קוד הגישה בשורת הפקודה באמצעות הפקודה get_token בפורמט הבא:
    > get_token -u emailAddress -p passcode
  7. מעבירים את אסימון הגישה לקריאה ל-Edge management API בתור הכותרת Bearer:
    > curl -H "Authorization: Bearer access_token" https://ms_IP:8080/v1/organizations/orgName

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

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

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

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

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

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

לדוגמה, משתמשים בקריאה הבאה ל-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'  

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

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

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'