將 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 Management API 呼叫支援基本驗證的指令碼 (Maven 指令碼、殼層指令碼、apigeetool 等) 已失效。您必須更新所有使用基本驗證的 API 呼叫和指令碼,才能在不記名標頭中傳遞 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 模組機器的 DNS 名稱 IP 位址。如果您在 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 中取得的一次性密碼:
    一次性密碼 ( 前往 https://edge_sso_IP.com/passcode 取得密碼)
    在 SAML 已啟用時輸入密碼,或按下 ENTER 鍵:


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

    您可以在指令列中使用 get_token 指令,在指令列中輸入該密碼:
    > get_token -u emailAddress -p 密碼
  7. 將存取權杖傳送至 Edge Management API 呼叫,做為 Bearer 標頭:
    > curl -H "Authorization: Bearer access_token" https://ms_IP:8080/v1/organizations/orgName

    首次取得存取權杖時,


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

使用 Management API 取得及更新權杖

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

使用 Apigee Edge Management API 使用 OAuth2 安全性一文中所述的 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'