通过工作流发出经过身份验证的请求

如需发出经过身份验证的 HTTP 请求,您的工作流必须与具有适当凭据的服务账号(通过其电子邮件地址进行标识)相关联。如需详细了解如何将 Identity and Access Management (IAM) 服务账号附加到工作流,并向其授予访问资源所需的权限,请参阅向工作流授予访问 Google Cloud 资源的权限

身份验证令牌

默认情况下,出于安全原因,HTTP 请求不包含身份或访问令牌。您必须向工作流定义明确添加身份验证信息。

为了在 Workflows 与需要进行此类身份验证的 HTTP 目标之间进行身份验证,Workflows 会根据关联到工作流的服务账号的凭据,在授权标头中使用令牌,并使用 HTTPS 将令牌发送到目标服务。连接 Cloud Run functions 或 Cloud Run 时,请使用 ID 令牌 (OIDC)。对于在 googleapis.com 上托管的 API,请使用访问令牌 (OAuth 2.0)。

如需在工作流中发出经过身份验证的请求,请根据您所调用的服务执行以下操作之一:

向外部 API 发出经过身份验证的请求

如果您要集成第三方 API,请添加 Authorization 请求标头以及执行身份验证所需的凭据。例如,在服务请求的 Authorization: Bearer ID_TOKEN 标头中添加一个 ID 令牌。如需了解详情,请参阅 API 提供商的文档。

向 Google Cloud API 发出经过身份验证的请求

工作流的服务账号可以生成 OAuth 2.0 令牌,工作流可以使用该令牌向任何 Google Cloud API 进行身份验证。使用此身份验证方法时,工作流会以其关联的服务账号进行身份验证。如需使用 OAuth 2.0 协议发出 HTTP 请求,请在指定网址的 auth 部分添加到工作流定义的 args 部分。在此示例中,系统将向 Compute Engine API 发送停止虚拟机的请求:

YAML

  - step_A:
      call: http.post
      args:
          url: https://compute.googleapis.com/compute/v1/projects/myproject1234/zones/us-central1-b/instances/myvm001/stop
          auth:
              type: OAuth2
              scopes: OAUTH_SCOPE
    

JSON

    [
      {
        "step_A": {
          "call": "http.post",
          "args": {
            "url": "https://compute.googleapis.com/compute/v1/projects/myproject1234/zones/us-central1-b/instances/myvm001/stop",
            "auth": {
              "type": "OAuth2",
              "scopes": "OAUTH_SCOPE"
            }
          }
        }
      }
    ]
      
scopes 键是可选的,但可用于为令牌指定 OAuth 2.0 范围。将 OAUTH_SCOPE 替换为字符串或字符串列表。还支持空格和逗号分隔的字符串。默认情况下,该值设置为 https://www.googleapis.com/auth/cloud-platform

向 Cloud Run functions 或 Cloud Run 发出请求

向 Cloud Run functions 或 Cloud Run 发出请求时,请使用 OIDC 进行身份验证。

如需使用 OIDC 发出 HTTP 请求,请在指定网址后,将 auth 部分添加到工作流定义的 args 部分。在此示例中,系统将发送调用 Cloud Run 函数的请求:

YAML

  - step_A:
      call: http.get
      args:
          url: https://us-central1-project.cloudfunctions.net/functionA
          query:
              firstNumber: 4
              secondNumber: 6
              operation: sum
          auth:
              type: OIDC
              audience: OIDC_AUDIENCE
    

JSON

    [
      {
        "step_A": {
          "call": "http.get",
          "args": {
            "url": "https://us-central1-project.cloudfunctions.net/functionA",
            "query": {
              "firstNumber": 4,
              "secondNumber": 6,
              "operation": "sum"
            },
            "auth": {
              "type": "OIDC",
              "audience": "OIDC_AUDIENCE"
            }
          }
        }
      }
    ]
      
audience 密钥是可选的,但可用于为令牌指定 OIDC 目标设备。默认情况下,OIDC_AUDIENCE 设置为与 url 相同的值。

请注意,Workflows 可以调用入站流量受限于内部流量的 Cloud Run functions 或 Cloud Run 服务。使用此配置时,您的服务无法通过互联网访问,但可以通过 Workflows 访问。

如需了解详情,请参阅调用 Cloud Run functions 函数或 Cloud Run

后续步骤