將 SAML 與 Edge Management API 搭配使用

Private Cloud v. 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 的指令碼 (Maven 指令碼、殼層指令碼、apigeetool 等) 支援基本驗證的 Management API 呼叫已停止運作。您必須更新所有 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 是機器的 DNS 名稱的 IP 位址 負責託管 Edge SSO 模組如果您已在邊緣單一登入 (SSO) 中設定 TLS,請使用 https 和正確的 TLS 通訊埠號碼。

  2. 解壓縮 ssocli-bundle.zip 套件:
    unzip ssocli-bundle.zip
  3. 在以下位置安裝「get_token」: /usr/local/bin
    ./install

    使用 -b 選項指定其他位置:

    ./install -b path
  4. SSO_LOGIN_URL 環境變數設為您的登入網址,格式如下:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    其中 edge_sso_IP_DNS 是機器的 DNS 名稱的 IP 位址 負責託管 Edge SSO 模組如果您已在邊緣單一登入 (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 Management API 確保安全性包含如何使用 用於取得及更新權杖的 Edge Management API。您也能透過 Edge API 呼叫取得權杖 。

和先前提過的 API 呼叫 使用 OAuth2 安全性功能 使用 Apigee Edge Management 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'