搭配 Edge API 使用外部 IDP 時,從 IDP 互動取得 OAuth2 存取和重新整理權杖的程序稱為密碼流程。透過密碼流程,您可以使用瀏覽器取得動態密碼,然後使用該密碼取得 OAuth2 權杖。
不過,開發環境可能支援常見開發工作的自動化,例如測試自動化或 CI/CD。啟用外部 IDP 時,如要自動執行這些工作,您必須取得並重新整理 OAuth2 權杖,不必從瀏覽器複製/貼上密碼。
如果機構啟用 IDP,Edge 支援透過機構內的機器使用者自動產生權杖。機器使用者可以取得 OAuth2 權杖,不必指定密碼。也就是說,您可以使用 Edge 管理 API,完全自動化取得及更新 OAuth2 權杖的程序。
為啟用 IDP 的機構建立機器使用者的方法有兩種:
以下各節將說明這些方法。
如果機構未啟用外部 IDP,就無法建立機器使用者。
使用 apigee-ssoadminapi.sh 建立機器使用者
使用 apigee-ssoadminapi.sh 公用程式在已啟用 IDP 的機構中建立機器使用者。詳情請參閱使用 apigee-ssoadminapi.sh。您可以建立單一機器使用者供所有機構使用,也可以為每個機構分別建立機器使用者。
機器使用者會在 Edge 資料儲存庫中建立及儲存,而非在 IDP 中。因此,您不必使用 Edge UI 和 Edge 管理 API 維護機器使用者。
建立機器使用者時,必須指定電子郵件地址和密碼。建立機器使用者後,請將其指派給一或多個機構。
如要使用 apigee-ssoadminapi.sh 建立機器使用者:
- 使用下列
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屬性定義的管理員使用者名稱,用於設定 Apigee SSO 模組。預設值為ssoadmin。 - SSO_ADMIN_SECRET 是管理員密碼,由設定檔中的
SSO_ADMIN_SECRET屬性指定。在本範例中,您可以省略
--port和--ssl的值,因為apigee-sso模組會使用--port的預設值 9099,以及--ssl的預設值 http。如果您的安裝作業未使用這些預設值,請視需要指定這些值。
- SSO_ADMIN_NAME 是由設定檔中的
- 登入 Edge UI,將電腦使用者的電子郵件地址新增至貴機構,並將電腦使用者指派給必要角色。詳情請參閱新增全域使用者。
使用 Edge 管理 API 建立機器使用者
您可以使用 Edge 管理 API 建立機器使用者,不必使用 apigee-ssoadminapi.sh 公用程式。
如要使用 Management API 建立機器使用者,請按照下列步驟操作:
- 使用下列
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。
- 將機器使用者的電子郵件地址新增至貴機構,並為機器使用者指派必要角色。詳情請參閱新增全域使用者。
取得及更新電腦使用者權杖
使用 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'
儲存權杖,稍後會用到。
- 將存取權杖做為
Bearer標頭傳遞至 Edge 管理 API 呼叫,如下列範例所示:curl -H "Authorization: Bearer access_token" \ http://MS_IP_DNS:8080/v1/organizations/org_name
其中 org_name 是指包含機器使用者的機構名稱。
- 如要稍後更新存取權杖,請使用下列包含更新權杖的呼叫:
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'