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

要发出经过身份验证的 HTTP 请求,您的工作流必须与 (通过其电子邮件地址来标识)的服务账号, 凭据。如需详细了解如何附加 Identity and Access Management (IAM) 分配给工作流,以及向该服务账号授予 请参阅 授予工作流访问 Google Cloud 资源的权限

身份验证令牌

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

要在 Workflows 和需要此类 Workflows 在授权过程中使用令牌, 标头, 并使用 HTTPS 将令牌发送到目标服务。连接到 使用 Cloud Run 函数或 Cloud Run ID 令牌 (OIDC)。对于托管在 googleapis.com,请使用 访问令牌 (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 函数或 Cloud Run 发出请求

向 Cloud Run 函数或 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 函数或 Cloud Run 服务 仅限内部流量访问使用此配置,您的服务 无法通过互联网访问,但可以通过 Workflows 访问。

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

后续步骤