自动处理外部 IDP 的任务

将外部 IDP 与 Edge API 搭配使用时,用于获取 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 界面和 Edge 管理功能维护机器用户 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 界面并将机器用户的电子邮件添加到您的组织,然后为其分配 授予必要的角色。请参阅 添加全局用户: 。

使用 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-ssoSSO_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 界面。
  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'