搭配 Edge Management API 使用外部 IdP

呼叫 Edge Management API 時,基本驗證功能是一種驗證方法,舉例來說,您可以向 Edge Management API 提出下列 curl 要求,藉此存取貴機構的相關資訊:

curl -u USER_NAME:PASSWORD https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

在這個範例中,您將使用 curl -u 選項來傳遞基本驗證憑證。或者,您也可以在 Bearer 標頭中傳遞 OAuth2 權杖,進行 Edge Management API 呼叫,如以下範例所示:

curl -H "Authorization: Bearer ACCESS_TOKEN" https://MS_IP_DNS:8080/v1/organizations/ORG_NAME

啟用外部 IDP 進行驗證後,您可以選擇停用基本驗證。如果您停用基本驗證功能,所有仰賴 Edge Management API 呼叫支援基本驗證的指令碼 (例如 Maven、殼層和 apigeetool) 都會停止運作。您必須更新所有使用基本驗證的 API 呼叫和指令碼,才能在 Bearer 標頭中傳遞 OAuth2 存取權杖。

透過 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 是託管 Apigee SSO 模組的電腦 IP 位址或 DNS 名稱。如果您在 Apigee SSO 上設定傳輸層安全標準 (TLS),請使用 https 和正確的 TLS 通訊埠號碼。

  2. 解壓縮 ssocli-bundle.zip 套件,如以下範例所示:
    unzip ssocli-bundle.zip
  3. /usr/local/bin 中安裝 get_token,如以下範例所示:
    ./install -b PATH

    -b 選項指定不同位置。

  4. SSO_LOGIN_URL 環境變數設為您的登入網址,格式如下:
    export SSO_LOGIN_URL="http://EDGE_SSO_IP_DNS:9099"

    其中 EDGE_SSO_IP_DNS 是託管 Apigee SSO 模組的機器 IP 位址。如果您在 Apigee SSO 上設定 TLS,請使用 https 和正確的 TLS 通訊埠號碼。

  5. (僅限 SAML) 在瀏覽器中前往以下網址,取得一次性密碼:
    http://EDGE_SSO_IP_DNS:9099/passcode

    如果您在 Apigee SSO 上設定 TLS,請使用 https 和正確的 TLS 通訊埠號碼。

    這項要求會傳回一次性密碼,除非您重新整理該網址來取得新密碼,或使用 get_token 的密碼產生存取權杖。

    請注意,只有在透過 SAML IDP 進行驗證時才能使用密碼。您無法使用密碼透過 LDAP IDP 進行驗證。

  6. 叫用 get_token 來取得 OAuth2 存取權杖,如以下範例所示:
    get_token -u EMAIL_ADDRESS

    其中 EMAIL_ADDRESS 是 Edge 使用者的電子郵件地址。

    (僅限 SAML) 在指令列以及電子郵件地址之外輸入密碼,如以下範例所示:

    get_token -u EMAIL_ADDRESS -p PASSCODE

    get_token 公用程式會取得 OAuth2 存取權杖並輸出至畫面上,然後將該權杖和更新權杖寫入 ~/.sso-cli

  7. 將存取權杖以 Bearer 標頭的形式傳送至 Edge Management API 呼叫,如以下範例所示:
    curl -H "Authorization: Bearer ACCESS_TOKEN"
      https://MS_IP:8080/v1/organizations/ORG_NAME
  8. 在您第一次取得新的存取權杖後,您可以透過單一指令取得存取權杖,並將該權杖傳送至 API 呼叫,如以下範例所示:
    header=`get_token` && curl -H "Authorization: Bearer $header"
      https://MS_IP:8080/v1/o/ORG_NAME

    以這種指令形式來說,如果存取權杖已過期,系統會自動重新整理,直到更新權杖過期為止。

(僅限 SAML) 更新權杖到期後,get_token 會提示您輸入新的密碼。您必須前往上方步驟 3 中顯示的網址,並產生新的密碼,才能產生新的 OAuth 存取權杖。

使用 Management API 取得及更新權杖

搭配 Apigee Edge Management API 使用 OAuth2 安全性,瞭解如何利用 Edge Management API 取得及更新權杖。您也可以使用 Edge API 呼叫取得 SAML 宣告產生的權杖。

透過 Apigee Edge Management API 使用 OAuth2 安全性一文中所述的 API 呼叫的唯一差別,在於呼叫的網址必須參照您的區域名稱。此外,如要透過 SAML IDP 產生初始存取權杖,您必須加入密碼,如上述程序的步驟 3 所示。

如要進行授權,請在 Authorization 標頭中傳遞保留的 OAuth2 用戶端憑證。呼叫會在畫面中列印存取權和重新整理權杖。

取得存取權杖

(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 \
  http://EDGE_SSO_IP_DNS:9099/oauth/token -s \
  -d 'grant_type=password&username=USER_EMAIL&password=USER_PASSWORD'

(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=REFRESH_TOKEN'