啟用 Apigee SSO 後使用 Edge 管理公用程式和 API

本節說明啟用 Apigee SSO 後,如何執行 Edge 系統管理工具和指令。在 Edge 上執行許多工作時,都需要系統管理憑證,例如:

  • 建立組織和環境
  • 新增及移除 Edge 元件
  • 執行 apigee-adminapi.sh 指令

不過,在 Edge 上啟用 SSO 後,您通常會停用基本驗證,這樣驗證的唯一方式就是透過 OIDC/SAML IDP。因此,請務必將系統管理員帳戶新增至 IDP,或為自動化作業建立本機機器使用者。

以系統管理員身分呼叫 Edge Management API

許多 Edge API 呼叫都需要您傳遞系統管理員憑證。搭配使用 SAML 與 Edge Management API 包含在發出 Edge Management API 呼叫時,如何使用 get_token 公用程式取得及更新權杖的操作說明。

搭配使用 apigee-adminapi.sh 公用程式與 Apigee SSO

使用 apigee-adminapi.sh 公用程式執行相同的 Edge 設定工作,方法是呼叫 Edge Management API。apigee-adminapi.sh 公用程式的優點如下:

  • 使用簡單的指令列介面
  • 實作以 Tab 鍵為基礎的指令完成功能
  • 提供說明和使用資訊
  • 如果您決定試用 API,可以顯示對應的 API 呼叫

啟用 Apigee SSO 後,您可以透過兩種主要方式將憑證傳遞至 apigee-adminapi.sh 公用程式,具體取決於您是管理員還是自動化指令碼。

如要查看任何 apigee-adminapi.sh 指令的所有選項 (包括指定 SSO 憑證的選項),請使用指令的 -h 選項。例如:

apigee-adminapi.sh orgs list -h

傳遞不記名權杖 (適用於真人管理員)

現代化的 Apigee SSO 不支援舊版 /passcode 複製貼上流程,因此管理員必須使用 get_token 公用程式完成 OAuth 2.0 裝置代碼流程,然後將產生的權杖傳遞至指令碼。

首先,請取得權杖:

/opt/apigee/apigee-openldap/bin/get_token -u adminEmail

接著,在呼叫指令時使用權杖:

apigee-adminapi.sh orgs list --sso-url http://edge_sso_IP_DNS:9099 --oauth-flow passcode \
  --admin adminEmail --oauth-token token_string

其中:

  • oauth-flow 指定 passcode (這會向舊版指令碼發出信號,表示正在提供權杖)。
  • oauth-token 包含從 get_token 取得的原始 JWT 字串。

傳遞密碼 (僅限機器使用者)

如果您要自動部署基礎架構,可以直接透過 password_grant 流程傳遞憑證。不過,如果啟用 SAML/OIDC 聯盟,真人影子使用者將無法使用密碼登入,以免略過 MFA。您必須先在 OpenLDAP 中佈建明確的機器使用者。

apigee-adminapi.sh orgs list --sso-url http://edge_sso_IP_DNS:9099 --oauth-flow password_grant \
  --admin machineUserEmail --oauth-password machineUserPassword

其中:

  • sso-url 選項會指定 Apigee SSO 的網址。如果您已將通訊埠和通訊協定從 9099 和 HTTP 變更,請修改通訊埠或通訊協定。
  • oauth-flow 指定 password_grant。
  • machineUserEmail 是自動化機器使用者的電子郵件地址。
  • oauth-password 指定機器的使用者密碼。

搭配 Apigee SSO 使用 Edge 公用程式

許多 Edge 公用程式需要系統管理員憑證,例如:

  • apigee-provision 用於建立組織、環境和虛擬主機
  • setup.sh,用於將節點新增至現有系統
  • 任何其他必須在設定檔中指定系統管理員憑證的公用程式

這些公用程式會將指定系統管理員憑證的設定檔做為輸入內容。在啟用單一登入 (SSO) 服務前,請使用下列屬性完成這項操作:

ADMIN_EMAIL="adminEmail"
APIGEE_ADMINPW="adminPWord"

啟用 Apigee SSO 後,您必須使用不同的屬性來指定系統管理員的憑證。

使用不記名權杖 (適用於真人管理員)

如要由管理員手動部署,請使用 get_token 公用程式取得權杖,並透過 OAUTH_BEARER_TOKEN 屬性提供權杖:

ADMIN_EMAIL="adminEmail"
SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"
OAUTH_FLOW="passcode"
OAUTH_BEARER_TOKEN="token_string"

其中:

  • OAUTH_FLOW 指定 passcode (表示已提供權杖)。
  • OAUTH_BEARER_TOKEN 包含從 get_token 取得的原始 JWT 字串。

使用密碼 (僅限機器使用者)

如要完全自動化部署,請使用 password_grant 流程,提供明確佈建的機器使用者憑證:

ADMIN_EMAIL="machineUserEmail"
SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"
OAUTH_FLOW="password_grant"
OAUTH_ADMIN_PASSWORD="machineUserPassword"

其中:

  • SSO_LOGIN_URL 指定 Apigee SSO 的網址。
  • OAUTH_FLOW 指定 password_grant。
  • OAUTH_ADMIN_PASSWORD 指定機器使用者的密碼。