搭配 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 取得及更新權杖

搭配使用 OAuth2 安全性與 Apigee Edge Management API:說明如何使用 Edge Management API 取得及更新權杖。您也可以使用 Edge API 呼叫,取得從 SAML 斷言產生的權杖。

「搭配 Apigee Edge Management API 使用 OAuth2 安全性」一文所述的 API 呼叫,與本節所述的 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'