將 SAML 與 Edge Management API 搭配使用

私有雲的邊緣 4.17.09 版

呼叫 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 中取得的一次性密碼:

    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. 將存取權杖傳送至 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 取得及更新權杖

透過 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'