將 SAML 與 Edge Management API 搭配使用

Private Cloud 適用的 Edge 4.17.09 版

基本驗證是在呼叫 Edge Management API 時進行驗證的一種方式。舉例來說,您可以向 Edge 管理 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 指令碼、shell 指令碼、apigeetool 等) 都會停止運作。您必須更新所有使用基本驗證的 API 呼叫和指令碼,以便在 Bearer 標頭中傳遞 OAuth2 存取權杖。

使用 get_token 取得及重新整理權杖

get_token 公用程式會交換您的基本驗證憑證和密碼,提供 OAuth2 存取權和更新權杖。get_token 公用程式會接受您的憑證,並列印有效的存取權杖。如果可重新整理權杖,則會重新整理權杖並列印出來。如果重新整理權杖到期,系統會提示使用者提供憑證。

get_token 公用程式會將權杖儲存在磁碟,供需要時使用。並將有效的存取權杖列印到標準輸出裝置。接著,您可以使用 Postman 或將其嵌入環境變數,以便在 curl 中使用。

以下程序說明如何使用 get_token 取得 OAuth2 存取權杖,以便發出 Edge 管理 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 單一登入模組的機器 DNS 名稱的 IP 位址。如果您已在邊緣單一登入 (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

    如果您已在邊緣單一登入 (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 管理 API 提供如何使用 Edge 管理 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'