自動執行外部 IdP 的工作

將外部 IDP 與 Edge API 搭配使用時,您透過 IDP 互動取得 OAuth2 存取權及更新權杖的程序稱為「密碼流程」。透過密碼流程,您可以透過瀏覽器取得動態密碼,然後用於取得 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 Management API 維護機器使用者。

建立電腦使用者時,您必須指定電子郵件地址和密碼。建立機器使用者後,您會將其指派給一或多個機構。

如何建立具有 apigee-ssoadminapi.sh 的機器使用者:

  1. 使用下列 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 值。如果您安裝時不使用這些預設值,請視需要指定。

  2. 登入 Edge UI 並將機器使用者的電子郵件地址新增至貴機構,然後將機器使用者指派為必要的角色。詳情請參閱「新增全域使用者」。

透過 Edge Management API 建立機器使用者

您可以使用 Edge Management API 建立機器使用者,而不使用 apigee-ssoadminapi.sh 公用程式。

透過 Management API 建立機器使用者

  1. 使用以下 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 屬性所指定。

    這個指令會顯示下一個呼叫所需的權杖。

  2. 使用下列 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"

    後續步驟會需要用到電腦使用者密碼。

  3. 登入 Edge UI。
  4. 將機器使用者的電子郵件新增至機構,並將機器使用者指派給必要的角色。詳情請參閱「新增全球使用者」。

取得並重新整理機器使用者權杖

透過 Edge API 傳遞機器使用者的憑證 (而非密碼),藉此取得及更新 OAuth2 權杖。

如要取得機器使用者的 OAuth2 權杖:

  1. 請使用下列 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'

    儲存權杖供日後使用。

  2. 將存取權杖以 Bearer 標頭的形式傳送至 Edge Management API 呼叫,如以下範例所示:
    curl -H "Authorization: Bearer access_token" \
      http://MS_IP_DNS:8080/v1/organizations/org_name

    其中 org_name 是包含電腦使用者的機構名稱。

  3. 如要稍後重新整理存取權杖,請使用包含更新權杖的呼叫:
    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'