將 SAML 與 Edge Management API 搭配使用

呼叫 Edge Management API 時,基本驗證是其中一種驗證方式。舉例來說,您可以向 Edge Management API 提出下列 cURL 要求,存取貴組織的相關資訊:

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

在本範例中,您會使用 cURL -u 選項傳遞基本驗證憑證。或者,您也可以在 Bearer 標頭中傳遞 OAuth2 權杖,發出 Edge Management API 呼叫。例如:

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

啟用 SAML 後,您可以選擇停用基本驗證。如果停用基本驗證,所有依賴 Edge 管理 API 呼叫支援基本驗證的指令碼 (Maven 指令碼、殼層指令碼、apigeetool 等) 都將無法運作。您必須更新所有使用基本驗證的 API 呼叫和指令碼,在 Bearer 標頭中傳遞 OAuth2 存取權杖。

使用 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 是託管 Edge SSO 模組的機器 IP 位址或 DNS 名稱。如果您在 Edge SSO 上設定 TLS,請使用 https 和正確的 TLS 通訊埠編號。

  2. 解壓縮 ssocli-bundle.zip 套件:
    unzip ssocli-bundle.zip
  3. 在 /usr/local/bin 中安裝 get_token:
    > ./install 使用 -b 選項指定其他位置:> ./install -b path
  4. 將 SSO_LOGIN_URL 環境變數設為登入網址,格式如下:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    其中 edge_sso_IP_DNS 是託管 Edge SSO 模組的機器 DNS 名稱 IP 位址。如果您在 Edge SSO 上設定 TLS,請使用 https 和正確的 TLS 通訊埠編號。
  5. 在瀏覽器中前往下列網址,取得動態密碼:
    http://edge_sso_IP_DNS:9099/passcode

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

    注意:如果您目前未透過識別資訊提供者登入,系統會提示您登入。

    這個網址會傳回動態密碼,在您重新整理網址取得新密碼,或使用密碼搭配 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. 將存取權杖做為 Bearer 標頭傳遞至 Edge Management API 呼叫:
    > 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 會提示您輸入新的密碼。您必須前往上方步驟 3 顯示的網址,並產生新的密碼,才能產生新的 OAuth 存取權杖

使用 Management API 取得及更新權杖

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

「搭配使用 OAuth2 安全性與 Apigee Edge Management API」一文所述的 API 呼叫,與本節所述的 API 呼叫唯一的差異在於,呼叫的網址必須參照您的可用區名稱。此外,如要產生初始存取權杖,您必須加入密碼,如上述程序步驟 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'  

如要授權,請在 Authorization 標頭中傳遞保留的 OAuth2 用戶端憑證。呼叫會將存取權杖和更新權杖輸出至畫面。

如要更新存取權杖,請使用下列呼叫,並附上更新權杖:

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'