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

Edge for Private Cloud בגרסה 4.17.09

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

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

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

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

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

שימוש בפונקציה get_token כדי לקבל ולרענן אסימונים

כלי השירות get_token מחליף את פרטי הכניסה לאימות הבסיסי ואת קוד הגישה באסימון הגישה והרענון של 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 של המכונה שמארחת את מודול ה-SSO של Edge. אם הגדרתם 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. מעבירים את טוקן הגישה לקריאה ל-API לניהול Edge ככותרת 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'