搭配 Edge API 使用外部 IDP 時,用於取得 OAuth2 的程序 來自 IDP 互動的存取權和更新權杖稱為密碼流程。使用 密碼流程,您透過瀏覽器取得動態密碼,之後就能用來取得 OAuth2 符記
然而,您的開發環境可能會支援自動化處理一般開發工作。 例如測試自動化或 CI/CD如要在啟用外部 IdP 的情況下自動執行這些工作, 您必須設法取得並更新 OAuth2 權杖,而不需複製/貼上 。
Edge 透過機構內的機器使用者,支援自動產生權杖 已啟用 IdP 服務機器使用者可以 不必指定密碼,即可取得 OAuth2 權杖。這表示您可以完全 使用 Edge Management API 取得並更新 OAuth2 權杖的程序。
您可以透過兩種方式為已啟用 IDP 的機構建立電腦使用者:
以下章節會分別說明這些方法。
您無法為未啟用外部 IdP 的機構建立電腦使用者。
使用 apigee-ssoadminapi.sh
建立電腦使用者
使用「apigee-ssoadminapi.sh
」
公用程式,在已啟用 IdP 的機構中建立電腦使用者。如需相關資訊,請參閱使用
apigee-ssoadminapi.sh。您可以建立單一電腦使用者
或為各機構建立獨立的電腦使用者。
電腦使用者會建立並儲存在 Edge 資料儲存庫,而非 IDP 中。因此 無須透過使用 Edge UI 和 Edge 管理機制維護電腦使用者 也能使用 Google Cloud CLI 或 Compute Engine 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
QUESTION/TBD: Does apigee-ssoadminapi.sh also take "ldap" as an argument?
在此情況下:
- 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 建立機器使用者 Management API
您可以使用 Edge Management 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
,由 SDK 中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 Management 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'