Edge for Private Cloud 4.17.09 版
搭配使用 SAML 和 Edge API 時,從 SAML 斷言取得 OAuth2 存取權杖和更新權杖的程序稱為密碼流程。在密碼流程中,您可以使用瀏覽器取得動態密碼,然後使用該密碼取得 OAuth2 權杖。
不過,開發環境可能支援常見開發工作的自動化,例如測試自動化或持續整合/持續部署 (CI/CD)。如要在啟用 SAML 時自動執行這些工作,您必須能取得及重新整理 OAuth2 權杖,而不必從瀏覽器複製/貼上密碼。
Edge 支援透過機器使用者自動產生權杖。機器使用者可以取得 OAuth2 權杖,不必指定密碼。也就是說,您可以使用 Edge Management API,完全自動化取得及重新整理 OAuth2 權杖的程序。
建立機器使用者
使用 apigee-ssoadminapi.sh 公用程式,為 SAML 組織建立機器使用者。詳情請參閱「使用 apigee-ssoadminapi.sh」。您可以建立一個機器使用者,供所有組織使用,也可以為每個組織建立個別的機器使用者。
系統會建立機器使用者,並儲存在 Edge 資料儲存庫中,而非 SAML 識別資訊提供者。因此,您不必使用 Edge UI 和 Edge Management API 維護機器使用者。
建立機器使用者時,必須指定電子郵件地址和密碼。建立機器使用者後,請將其指派給一或多個組織。
如要建立機器使用者,請按照下列步驟操作:
- 使用下列 apigee-ssoadminapi.sh 指令建立機器使用者:
> apigee-ssoadminapi.sh saml machineuser add --admin SSO_ADMIN_NAME --secret SSO_ADMIN_SECRET --host edge_sso_IP_or_DNS -u machine_user_email -p machine_user_password
其中:- SSO_ADMIN_NAME 是由設定檔中的 SSO_ADMIN_NAME 屬性定義的管理員使用者名稱,用於設定 Edge SSO 模組。預設值為 ssoadmin。
- SSO_ADMIN_SECRET 是設定檔中 SSO_ADMIN_SECRET 屬性指定的管理員密碼。
在本範例中,您可以省略 --port 和 --ssl 的值,因為 apigee-sso 模組會使用 --port 的預設值 9099,以及 --ssl 的預設值 http。如果安裝作業未使用這些預設值,請視需要指定。
- 登入 Edge UI,將機器使用者的電子郵件地址新增至貴機構,並為機器使用者指派必要角色。詳情請參閱「新增全域使用者」。
取得及更新機器使用者權杖
使用 Edge API 取得及重新整理 OAuth2 權杖,方法是傳遞機器使用者的憑證,而非密碼。
如要取得機器使用者的 OAuth2 權杖,請按照下列步驟操作:
- 使用下列 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 /
http://edge_sso_IP_DNS:9099/oauth/token -s /
-d 'grant_type=password&username=m_user_email&password=m_user_password '
如要授權,請在 Authorization 標頭中傳遞保留的 OAuth2 用戶端憑證。呼叫會將存取權杖和更新權杖輸出至畫面。儲存權杖,稍後會用到。 - 將存取權杖做為 Bearer 標頭傳遞至 Edge Management API 呼叫:
> curl -H "Authorization: Bearer access_token" http://ms_IP_DNS:8080/v1/organizations/orgName
其中 orgName 是包含機器使用者的組織名稱。 - 如要稍後更新存取權杖,請使用下列呼叫,其中包含更新權杖:
> 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 /
http://edge_sso_IP_DNS:9099/oauth/token /
-d 'grant_type=refresh_token&refresh_token=refreshToken'
如要授權,請在「Authorization」標頭中傳遞保留的 OAuth2 用戶端憑證。
使用 Edge Management API 建立機器使用者
您可以使用 Edge Management API 建立機器使用者,而不使用 apigee-ssoadminapi.sh 公用程式。如要建立機器使用者,請按照下列步驟操作:
- 使用下列 cURL 指令,取得 ssoadmin 使用者的權杖,也就是 apigee-sso 管理員帳戶的使用者名稱:
> curl "http://edge_sso_IP_DNS:9099/oauth/token" -i -X POST /
-H 'Accept: application/json' / -H 'Content-Type: application/x-www-form-urlencoded' /
-d "response_type=token" -d "grant_type=client_credentials" /
--data-urlencode "client_secret=SSO_ADMIN_SECRET" /
--data-urlencode "client_id=ssoadmin"
其中 SSO_ADMIN_SECRET 是您在安裝 apigee-sso 時設定的管理員密碼,如設定檔中的 SSO_ADMIN_SECRET 屬性所指定。
這個指令會顯示您在下一次呼叫時所需的權杖。 - 使用下列 cURL 指令建立機器使用者,並傳遞您在上一步中收到的權杖:
> curl "http://edge_sso_IP_DNS:9099/Users" -i -X POST /
-H "Accept: application/json" -H "Content-Type: application/json" /
-d '{"userName" : "machine_user_email", "name" : {"formatted":"DevOps", "familyName" : "last_name", "givenName" : "first_name"}, "emails" : [ {"value" : "machine_user_email", "primary" : true } ], "active" : true, "verified" : true, "password" : "machine_user_password" }' /
-H "Authorization: Bearer token"
後續步驟會用到機器使用者密碼。 - 登入 Edge UI,將機器使用者的電子郵件地址新增至貴機構,並為機器使用者指派必要角色。詳情請參閱「新增全域使用者」。