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

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

身份验证令牌

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

为了在 Workflows 和需要此类身份验证的 HTTP 目标之间进行身份验证,Workflows 会根据附加到工作流的服务帐号的凭据,在授权标头中使用令牌,并使用 HTTPS 将令牌发送到目标服务。与 Cloud 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 Functions 或 Cloud Run 发出请求

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

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

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 Functions 或 Cloud Run 服务。采用此配置时,您无法通过互联网访问您的服务,但可通过 Workflows 访问您的服务。

如需了解详情,请参阅调用 Cloud Functions 或 Cloud Run

后续步骤