透過 SAML 存取 Edge API

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

SAML 支援單一登入 (SSO) 環境。使用 SAML 搭配 Edge 即可支援單一登入 (SSO) 服務 除了您提供的任何其他服務,也支援 Edge UI 和 API 。

事前準備:您必須至少啟用 SAML,至少為 才能存取 Edge API

SAML 和 OAuth2 的差異

SAML 設定完成後,使用方法與透過 OAuth2 進行存取 Edge API:呼叫 Edge API 時,您會在 您的要求。

存取 Edge API 時,SAML 與 OAuth2 之間的主要差異在於 取得符記如果使用 SAML,您必須在取得 符記組合:

  1. 可用區:Edge for Public Cloud 使用者在取得權杖時,必須參照自己的可用區名稱。
  2. 密碼:在要求存取權/重新整理時加入一次性密碼 符記組合

SAML 會在 Edge OAuth2 服務中使用相同的端點,並加上適當的區域名稱。

如要透過 SAML 取得存取權杖,您可以使用本節所述的其中一種方法:

此外,您也可以按照「自動化權杖產生程序」一文的說明,為電腦使用者自動執行權杖產生程序。

透過 get_token 取得存取權杖

您可以使用 get_token 公用程式交換憑證,以便存取 OAuth2 和 更新您用於 SAML 的憑證。

如何使用 get_token 取得存取權杖:

  1. SSO_LOGIN_URL 環境變數設為您的登入網址。登入網址 格式如下:
    https://zoneName.login.apigee.com

    舉例來說,對於名為「acme」的可用區,請將 SSO_LOGIN_URL 設為「https://acme.login.apigee.com」, 如以下範例所示:

    export SSO_LOGIN_URL=https://acme.login.apigee.com
  2. 呼叫 get_token 以取得 OAuth2 存取權杖:
    get_token -u me@example.com

    系統會提示您造訪顯示的網址,取得一次性密碼:

    Get passcode from https://acme.login.apigee.com/passcode
    [Note:  Passcode can be used only time time and expires] Input passcode (no spaces) and then press ENTER:

    如果你最近尚未透過識別資訊提供者登入,系統會提示您登入 。

    這個網址會傳回一次性密碼,直到您重新整理該網址, 取得新密碼,或使用 get_token 密碼產生 存取權杖例如:

  3. 輸入密碼。get_token 公用程式會取得 OAuth2 權杖。 將存取權杖輸出到 stdout,並寫入存取權和更新權杖 至 ~/.sso-cli

  4. 呼叫 Edge API 並傳遞 Authorization: Bearer 中的存取權杖 標頭,如以下範例所示:
    curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
      -H "Authorization: Bearer ACCESS_TOKEN"

    您可以從 stdout 複製存取權杖的值。

    這個範例會取得指定機構的詳細資料。如需完整的管理服務清單 API 端點,請參閱 Apigee Edge API 參考資料

存取權杖到期後,您可以再次呼叫 get_token 來取得新的存取權 產生下一個符記例如:

get_token -u me@example.com

在更新權杖過期前,系統不會提示您輸入新密碼。

更新權杖到期時,get_token 會提示您輸入新的密碼。您必須 產生新的密碼,如此您才能產生新的 OAuth2 存取權杖。

透過 Edge OAuth2 服務取得存取權杖

您可以使用 Edge OAuth2 服務取得用於 SAML 的存取權杖。進行驗證 使用 Edge API,您可以在第一次要求時使用密碼,以取得存取權/重新整理 權杖配對,然後再次取得新的符記組合。

如要取得與 Edge API 的權杖配對,請按照下列步驟操作:

  1. 在瀏覽器中前往以下網址,取得一次性密碼:
    https://zoneName.login.apigee.com/passcode

    舉例來說,如果是名為「acme」的區域,請前往以下網址:

    https://acme.login.apigee.com/passcode

    如果你最近尚未透過識別資訊提供者登入,系統會提示您登入 。

    這個網址會傳回一組一次性密碼做為憑證以取得權杖。在您更新以下網址前,密碼都會維持有效: 取得新密碼,或使用 get_token 密碼產生 存取權杖例如:

  2. 傳送要求至 Edge API,如以下範例所示:
    curl https://zoneName.login.apigee.com/oauth/token \
          -s \
          -H "Accept: application/json" \
          -d 'grant_type=password&response_type=token&passcode=passcode'

    passcode 是您的授權憑證。

    在此情況下:

    • Authorization 標頭為「Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0」(使用 確切值)。
    • 要求類型為 POST
    • 要求的主體包含下列內容:
      • grant_type 是「password」。
      • response_type 是「token」。
      • passcode,其中 passcode 是上一個步驟傳回的密碼。

    呼叫會在畫面中列印存取權和更新權杖。

如何更新存取權杖:

向「https://zoneName.login.apigee.com/oauth/token」提出要求, 如以下範例所示:

curl https://zoneName.login.apigee.com/oauth/token \
      -d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'

在此情況下:

  • 要求的主體包含下列內容:
    • grant_type 是「refresh_token」。
    • refresh_token 是更新權杖的值。
  • Authorization 標頭為「Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0」(使用 確切值)。
  • 要求類型為 POST

透過 SAML 存取 Edge API

您可以使用 curl 等工具,或 Apigee 便利公用程式 acurl 到 存取 Edge API

使用 curl 即可呼叫 Edge API,並在 Authorization: Bearer 標頭,如以下範例所示:

curl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -H "Authorization: Bearer ACCESS_TOKEN"

使用 acurl 時,您不需要指定 Authorization 標頭。例如:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval

這些範例會呼叫 Edge API 端點,以取得指定機構的詳細資料。 如需 Edge API 端點的完整清單,請參閱 Apigee Edge API 參考資料

瞭解呼叫 API 的其他方法,包括確保權杖仍保留的方式 請參閱使用 OAuth2 存取 Edge API

SAML 可用區中的機器使用者

您可以使用 acurlget_token 公用程式編寫指令碼自動存取功能 至 Edge API,以便為 SAML 可用區中的電腦使用者提供服務。 以下範例說明如何 使用 get_token 要求存取權杖,然後將權杖值新增至 curl 呼叫:

  USER=me@example.com
  PASS=not-that-secret
  TOKEN=$(get_token -u $USER:$PASS -m '' --force-basic-auth)
  curl -H "Authorization: Bearer $TOKEN" 'https://api.enterprise.apigee.com/v1/organizations/...'

在上述範例中,將 -m 的值設為空白字串會禁止電腦使用者 進而避免對方要求輸入 MFA 代碼使用 --force-basic-auth 標記會覆寫 作為 SAML 區域要求所觸發的密碼的標準提示。

或者,您也可以使用 acurl 公用程式合併權杖要求和 curl 呼叫。 例如:

  USER=me@example.com
  PASS=not-that-secret
  acurl -u $USER:$PASS -m '' --force-basic-auth 'https://api.enterprise.apigee.com/v1/organizations/...'