使用機器使用者自動執行工作

使用外部 IDP 和 Edge API 時,從 CLI 取得 OIDC/OAuth2 存取權杖的標準程序是 OAuth 2.0 裝置代碼流程。在這個流程中,您會使用 get_token 公用程式,系統會提示您在瀏覽器中前往網址,透過 IDP 進行驗證,然後自動解除封鎖終端機。

不過,開發環境可能支援常見開發工作的自動化,例如測試自動化或 CI/CD 管道。啟用外部 IDP 時,如要自動執行這些工作,您需要以無頭方式取得及重新整理 OAuth2 權杖,不必與瀏覽器互動。

Edge 支援使用無頭機器使用者自動產生權杖。機器使用者可以透過標準密碼授權取得 OIDC/OAuth2 權杖,不需使用瀏覽器。也就是說,您可以完全自動化取得及重新整理指令碼權杖的程序。

建立機器使用者

您可以建立一個供所有組織使用的機器使用者,也可以為每個組織建立個別的機器使用者。

機器使用者會直接在本機 OpenLDAP 目錄中建立及儲存,並明確標記為機器使用者 (employeeType: machineuser)。這樣一來,即使對人類使用者嚴格強制執行聯合 SAML/OIDC,Apigee SSO 也能透過密碼授權安全地驗證機器使用者。

如需建立、列出及管理機器使用者的詳細操作說明,請參閱「使用 apigee-machineuser.sh 管理機器使用者」。

取得及更新機器使用者權杖

您可以使用 /opt/apigee/apigee-openldap/bin/ 提供的 get_token 和 acurl 公用程式,或標準 curl,取得機器使用者的權杖。

  • 使用 Apigee 公用程式:get_token 和 acurl 包裝函式會自動處理權杖快取、酬載生成和自動重新整理。如需使用這些工具的詳細操作說明和範例,請參閱「使用 get_token 和 acurl 公用程式」。
  • 使用標準 curl:如果自動化指令碼無法存取 Apigee 包裝函式,可以使用下列標準 curl 指令直接與 Apigee SSO 互動:

如要使用標準 curl 取得及更新權杖:

  1. 使用下列 API 呼叫,直接從 Apigee SSO 產生初始存取和更新權杖:
    curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
      -H "accept: application/json;charset=utf-8" \
      -X POST http://Edge_SSO_IP_DNS:9099/token -s \
        -d 'grant_type=password&username=machineUserEmail&password=machineUserPassword&client_id=edgecli&client_secret=edgeclisecret&scope=openid%20profile%20email%20offline_access'
      
  2. 將存取權杖傳遞至 Authorization: Bearer 標頭中的 Edge Management API 呼叫:
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name
  3. 如要在稍後以原生方式更新存取權杖,請使用下列包含更新權杖的呼叫:
    curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" \
      -H "Accept: application/json;charset=utf-8" \
      -X POST http://Edge_SSO_IP_DNS:9099/token \
      -d 'grant_type=refresh_token&refresh_token=refreshToken&client_id=edgecli&client_secret=edgeclisecret'