Apigee Extension Processor 使用入门

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

本页介绍了如何配置 Apigee 扩展处理器,以使用启用服务扩展功能的负载均衡器为 API 流量启用 API 政策强制执行。

如需详细了解将 Apigee Extension Processor 用于 API 管理的建议使用场景和优势,请参阅 Apigee Extension Processor 概览

Apigee 扩展处理器是一种流量 扩展程序(一种服务扩展程序),可让您使用 Cloud Load Balancing 将应用负载均衡器的数据处理路径中的调出发送到 Apigee 扩展处理器。配置好负载均衡器和流量扩展程序后,API 流量将由负载均衡器处理。Apigee Extension Processor 中的政策通过流量扩展程序调出应用于 API 流量。

以下部分将指导您完成配置 Apigee Extension Processor 关键元素所需的步骤:

  • 为后端服务配置负载均衡器
  • 配置 Apigee Extension Processor
  • 配置流量扩展服务
  • 将政策与 Extension Processor 搭配使用
  • 准备工作

    在开始设置 Apigee 扩展处理器之前,请务必完成以下任务:

    1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
    2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Go to project selector

    3. Make sure that billing is enabled for your Google Cloud project.

    4. Enable the Apigee, Compute Engine, and Network Services APIs.

      Enable the APIs

    5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Go to project selector

    6. Make sure that billing is enabled for your Google Cloud project.

    7. Enable the Apigee, Compute Engine, and Network Services APIs.

      Enable the APIs

    8. 安装 Google Cloud CLI

      安装 Google Cloud CLI 后,运行 gcloud components update 命令以获取最新的 gcloud 组件。

    9. 使用 1-15-0-apigee-2 或更高版本预配 Apigee 实例(如果尚未预配)。

      您可以在 Google Cloud 控制台的 Apigee 界面的实例详情页面中查看实例版本。前往 Google Cloud 控制台中的实例 页面,选择实例并查看其详情:

      转到“实例”

      您可以将扩展处理器与订阅Pay-as-you-go Apigee 组织搭配使用。如果您不确定自己使用的是订阅型 Apigee 组织还是随用随付型 Apigee 组织,请与您的 Apigee 组织管理员联系。 如需详细了解如何预配付费 Apigee 实例,请参阅准备工作

    10. 确认您计划使用的 Apigee 实例中已启用 VPC 和子网。在 Google Cloud 控制台中,前往 VPC 网络页面:

      前往“VPC 网络”页面

    11. 所需的角色

      如需获得安装 Apigee 扩展处理器所需的权限,请让您的管理员为您授予组织的以下 IAM 角色:

      如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

      您也可以通过自定义角色或其他预定义角色来获取所需的权限。

      设置环境变量

      在包含 Apigee 实例的 Google Cloud 项目中,使用以下命令设置环境变量:

      export PROJECT_ID=PROJECT_ID
      export ORG_NAME=$PROJECT_ID
      export REGION=REGION
      export INSTANCE=INSTANCE
      export VPC_NETWORK_NAME=VPC_NETWORK_NAME
      export SUBNET=SUBNET

      其中:

      • PROJECT_ID 是包含 Apigee 实例的项目的 ID。
      • REGION 是 Apigee 实例的 Google Cloud 区域。
      • INSTANCE 是您的 Apigee 实例的名称。
      • VPC_NETWORK_NAME 是您 Google Cloud 项目中要用于 Apigee 扩展处理器 (AEP) 的 VPC 网络的名称。
      • SUBNET 是您要用于 Apigee Extension Processor 的 Google Cloud 项目中的子网的名称。

      如需确认环境变量设置正确,请运行以下命令并查看输出:

      echo $PROJECT_ID $ORG_NAME $REGION $INSTANCE $VPC_NETWORK_NAME $SUBNET

      配置身份验证令牌

      如需配置身份验证令牌,请运行以下命令:

      export TOKEN=$(gcloud auth print-access-token)
      echo $TOKEN

      为后端服务配置负载均衡器

      以下部分介绍了使用 httpbin.org 作为示例,为后端服务设置全球外部应用负载平衡器所需的步骤:

      1. 创建全球外部应用负载平衡器
      2. 创建网络端点组 (NEG)
      3. 创建后端服务
      4. 创建网址映射
      5. 创建目标代理
      6. 创建全局转发规则

      创建全球外部应用负载均衡器

      如需创建负载均衡器,请执行以下操作:

      1. gcloud 配置设置为使用当前项目:
        gcloud config set project PROJECT_ID

        其中,PROJECT_ID 是包含 Apigee 实例的项目的 ID。

      2. 创建全局静态 IP 地址:
        gcloud compute addresses create IP_ADDRESS --ip-version=IPV4 --global

        其中,IP_ADDRESS 是您要创建的 IP 地址的名称。该名称必须与正则表达式 (?:a-z?) 匹配。

      3. 获取 IP 地址并将其保存为环境变量:
        IP=$(gcloud compute addresses describe IP_ADDRESS --format="get(address)" --global)

        其中,IP_ADDRESS 是您在上一步中创建的 IP 地址的名称。

      4. nip.io 创建 TLS 证书,这是一项为 IP 地址提供通配符 DNS 记录的第三方服务:
        gcloud compute ssl-certificates create SSL_CERT_NAME \
          --domains="nip.io"

        其中,SSL_CERT_NAME 是要创建的证书的名称。

      创建网络端点群组 (NEG)

      如需为负载均衡器创建网络端点组 (NEG),请执行以下操作:

      1. 创建 NEG:
        gcloud compute network-endpoint-groups create NEG_NAME \
          --network-endpoint-type=INTERNET_FQDN_PORT \
          --default-port=443 \
          --global

        其中,NEG_NAME 是您要创建的 NEG 的名称。

      2. httpbin.org 的端点添加到 NEG:
        gcloud compute network-endpoint-groups update NEG_NAME \
          --add-endpoint=fqdn=httpbin.org,port=443 \
          --global

        其中,NEG_NAME 是您在上一步中创建的 NEG 的名称。

      创建后端服务

      如需创建由负载均衡器公开的后端服务,请执行以下操作:

      1. 创建后端服务:
        gcloud compute backend-services create BACKEND_SERVICE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --protocol=HTTPS \
          --global

        其中,BACKEND_SERVICE_NAME 是您要创建的后端服务的名称。

      2. 将 NEG 添加到后端:
        gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
          --network-endpoint-group=NEG_NAME \
          --global-network-endpoint-group \
          --global

        其中:

        • BACKEND_SERVICE_NAME 是您在上一步中创建的后端服务的名称。
        • NEG_NAME 是您在上一步中创建的 NEG 的名称。

      创建网址映射

      如需在负载均衡器与后端服务之间创建网址映射,请使用以下命令:

      gcloud compute url-maps create URL_MAP_NAME \
        --default-service BACKEND_SERVICE_NAME \
        --global

      其中:

      • URL_MAP_NAME 是您要创建的网址映射的名称。
      • BACKEND_SERVICE_NAME 是您在之前的步骤中创建的后端服务的名称。

      创建目标代理

      如需为负载均衡器创建目标代理,请使用以下命令:

      gcloud compute target-https-proxies create TARGET_PROXY_NAME \
        --global \
        --ssl-certificates SSL_CERT_NAME \
        --global-ssl-certificates \
        --url-map URL_MAP_NAME \
        --global-url-map

      其中:

      • TARGET_PROXY_NAME 是要创建的目标代理的名称。
      • URL_MAP_NAME 是您在上一步中创建的网址映射的名称。
      • SSL_CERT_NAME 是您在上一步中为 nip.io 创建的 SSL 证书的名称。

      创建全局转发规则

      如需为负载均衡器创建全局转发规则,请使用以下命令:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=IP_ADDRESS \
        --target-https-proxy=TARGET_PROXY_NAME \
        --ports=443 \
        --global

      其中:

      • FORWARDING_RULE_NAME 是您要创建的转发规则的名称。
      • IP_ADDRESS 是您在上一步中创建的 NEG 端点的 IP 地址的名称。
      • TARGET_PROXY_NAME 是您在先前步骤中创建的目标代理的名称。

      配置 Apigee Extension Processor

      以下部分介绍了设置 Apigee Extension Processor 所需的步骤:

      1. 创建 Apigee 环境
      2. 创建 Extension Processor 代理

      创建 Apigee 环境

      1. 使用以下命令创建 Apigee 环境:
        curl -i -X POST -H  "Authorization: Bearer $TOKEN" \
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments" -H "Content-Type:application/json" -d \
            '{
                "name": "ENV_NAME",
                "displayName": "ENV_NAME",
                "state": "ACTIVE",
                "deploymentType": "PROXY",
                "apiProxyType": "PROGRAMMABLE",
                "type": "COMPREHENSIVE",
                "properties":
                {"property": [
                    {
                    "name": "apigee-service-extension-enabled",
                    "value": "true"
                    }
                  ]
                }
            }'

        其中,ENV_NAME 是您要创建的环境的名称。该名称必须包含 2 到 32 个字符,可以是小写字母、数字或连字符;名称必须以字母开头,且不能以连字符结尾。该名称必须与组织中的任何其他环境名称不同。

        确认环境已创建:

        curl -i -H "Authorization: Bearer $TOKEN" \
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments"

        环境列表应包含您刚刚创建的环境。

      2. 将新创建的环境关联到您的 Apigee 实例:
        curl -i -X POST -H "Authorization: Bearer $TOKEN" \
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/instances/$INSTANCE/attachments" -H "Content-Type:application/json" -d \
            '{
                "environment": "ENV_NAME"
                }'

        其中,ENV_NAME 是您在上一步中创建的环境的名称。

        此操作最长可能需要 10 分钟才能完成。

      3. 创建 Apigee 环境组:
        curl -H "Authorization: Bearer $TOKEN" -X POST \
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups" -H "Content-Type:application/json" -d \
            '{
                "name": "ENV_GROUP_NAME",
                "hostnames": ["ENV_GROUP_HOSTNAME"]
                }'

        其中:

        • ENV_GROUP_NAME 是您要创建的环境组的名称。
        • ENV_GROUP_HOSTNAME 是您要创建的环境组的主机名。主机名必须是完全限定的域名 (FQDN)。
      4. 将新环境附加到新环境组:
        curl -H "Authorization: Bearer $TOKEN" -X POST\
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups/ENV_GROUP_NAME/attachments" -H "content-type:application/json" -d \
                '{
                    "name": "ENV_GROUP_NAME",
                    "environment": "ENV_NAME"
                }' 

        其中:

        • ENV_GROUP_NAME 是您要创建的环境组的名称。
        • ENV_NAME 是您在之前的步骤中创建的环境的名称。

      创建 Extension Processor 代理

      如需创建 Apigee 无目标 API 代理以用于扩展处理器负载均衡器,请执行以下操作:

      1. 按照创建 API 代理中的步骤操作,创建具有以下规范的无目标代理:
        • 代理模板:选择无目标
        • 代理名称:输入代理名称。
        • 基本路径:设置您想要的任何基本路径。系统将不会使用该路径。

        代理的 XML 规范应类似于以下内容:

        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <APIProxy revision="1" name="extproc-sample">
            <DisplayName/>
            <Description/>
            <CreatedAt>1739581781912</CreatedAt>
            <LastModifiedAt>1739582447868</LastModifiedAt>
            <BasePaths>/</BasePaths>
            <Policies></Policies>
            <ProxyEndpoints>
                <ProxyEndpoint>default</ProxyEndpoint>
            </ProxyEndpoints>
        </APIProxy>
      2. 按照部署 API 代理中的步骤将代理部署到您之前创建的环境中。

      配置流量扩展程序

      本部分介绍如何使用以下步骤为扩展处理器配置流量服务扩展程序:

      1. 创建 Apigee Private Service Connect 网络端点群组
      2. 创建负载均衡器服务扩展程序
      3. 向负载均衡器发送请求

      创建 Apigee Private Service Connect 网络端点群组

      在本部分中,您将创建一个 Apigee Private Service Connect (PSC) 网络端点组 (NEG),用于连接到您的 Apigee 实例。如需详细了解 PSC,请参阅南向网络模式

      如需创建 Apigee PSC NEG,请执行以下操作:

      1. 获取 Apigee PSC 服务连接:
        PSC_ATTACHMENT=$(curl -s -H "Authorization: Bearer $TOKEN" \
            "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/instances" \
            | jq -r '.instances[] | select(.name = "'$INSTANCE'") | .serviceAttachment' \
            )

        如需查看服务连接,请执行以下操作:

        echo $PSC_ATTACHMENT

        响应应类似如下所示:

        projects/apigee-psc-autopush/regions/us-west1/serviceAttachments/apigee-us-west1-1234567890-psc-service-attachment

      2. 在 Apigee 实例所在的区域中创建 PSC NEG:
        gcloud compute network-endpoint-groups create apigee-neg-$REGION \
          --network-endpoint-type=private-service-connect \
          --psc-target-service=$PSC_ATTACHMENT \
          --region=$REGION \
          --network=$VPC_NETWORK_NAME \
          --subnet=$SUBNET

        响应应类似如下所示:

        projects/ab123456cd78ef910g-tp/regions/asia-northeast1/serviceAttachments/apigee-asia-northeast1-abcd

      3. 创建指向 PSC NEG 的 HTTP/2 后端服务(如果尚不存在):
        gcloud compute backend-services create PSC_NEG_BACKEND_SERVICE \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --protocol=HTTP2 \
          --global

        其中,PSC_NEG_BACKEND_SERVICE 是您要创建的后端服务的名称。

      4. 添加 PSC NEG 后端服务:
        gcloud compute backend-services add-backend PSC_NEG_BACKEND_SERVICE \
          --network-endpoint-group=apigee-neg-$REGION \
          --network-endpoint-group-region=$REGION \
          --global

        其中,PSC_NEG_BACKEND_SERVICE 是您在上一步中创建的后端服务的名称。

      5. 为后端服务启用日志记录:
        gcloud compute backend-services update PSC_NEG_BACKEND_SERVICE \
          --global \
          --enable-logging \
          --logging-sample-rate=1.0

        其中,PSC_NEG_BACKEND_SERVICE 是您在上一步中创建的后端服务的名称。

      创建负载均衡器服务扩展程序

      创建负载均衡器服务扩展程序时,您可以通过更改描述扩展程序的各个字段的值来自定义扩展程序处理器代理的行为,如下表所示:

      身体处理 支持的事件 元数据 发送模式
      请求和响应正文处理

      REQUEST_HEADERS

      REQUEST_BODY

      REQUEST_TRAILERS

      RESPONSE_HEADERS

      RESPONSE_BODY

      RESPONSE_TRAILERS

      apigee-request-body: true

      apigee-response-body: true

      requestBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      responseBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      仅处理请求正文

      REQUEST_HEADERS

      REQUEST_BODY

      REQUEST_TRAILERS

      RESPONSE_HEADERS

      apigee-request-body: true

      requestBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      仅处理响应正文

      REQUEST_HEADERS

      RESPONSE_HEADERS

      RESPONSE_BODY

      RESPONSE_TRAILERS

      apigee-response-body: true

      responseBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      在此步骤中,您将创建一个支持请求和响应正文处理的负载均衡器服务扩展程序:

      curl -X POST "https://networkservices.googleapis.com/v1beta1/projects/$PROJECT_ID/locations/global/lbTrafficExtensions?lbTrafficExtensionId=global-xlb-httpbin-apim-policy" \
        -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type: application/json" \
        -d '{
          "name": "global-xlb-httpbin-apim-policy",
          "forwardingRules": [
              "https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME"
          ],
          "extensionChains": [
              {
                  "name": "httpbin-apigee-extension-chain",
                  "matchCondition": {
                      "celExpression": "true"
                  },
                  "extensions": [
                      {
                          "name": "httpbin-apigee-extension",
                          "authority": "ENV_GROUP_HOSTNAME",
                          "service": "https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/backendServices/PSC_NEG_BACKEND_SERVICE",
                          "supportedEvents": [
                              "REQUEST_HEADERS",
                              "REQUEST_BODY",
                              "REQUEST_TRAILERS",
                              "RESPONSE_HEADERS",
                              "RESPONSE_BODY",
                              "RESPONSE_TRAILERS"
                          ],
                          "timeout": "1s",
                          "requestBodySendMode": "BODY_SEND_MODE_FULL_DUPLEX_STREAMED",
                          "responseBodySendMode": "BODY_SEND_MODE_FULL_DUPLEX_STREAMED"
                      }
                  ]
              }
          ],
          "loadBalancingScheme": "EXTERNAL_MANAGED",
          "metadata": {
              "apigee-extension-processor": "EXT_PROC_NAME",
              "apigee-request-body": "true",
              "apigee-response-body": "true"
          }
      }'

      其中:

      • EXT_PROC_NAME 此名称必须与您在之前的步骤中创建的 API 代理的名称一致。
      • FORWARDING_RULE_NAME 是您在之前的步骤中创建的转发规则的名称。
      • ENV_GROUP_HOSTNAME 是用于环境组的域名。
      • PSC_NEG_BACKEND_SERVICE 是您在之前的步骤中创建的后端服务的名称。

      此操作可能需要几分钟才能完成。

      如需确认服务扩展程序已创建,请使用以下命令:

      curl "https://networkservices.googleapis.com/v1beta1/projects/$PROJECT_ID/locations/global/lbTrafficExtensions/httpbin-apigee-extension" \
        -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type: application/json"

      响应应类似如下所示,并显示转发规则和后端服务:

      createTime: '2025-03-22T00:29:16.056719825Z'
      extensionChains:
      - extensions:
        - authority: extension-processor-test.hybrid.e2e.apigeeks.net
          name: httpbin-apigee-extension
          service: https://www.googleapis.com/compute/v1/projects/123456789012/global/backendServices/ep-test-psc-neg-bes
          supportedEvents:
          - REQUEST_HEADERS
          - REQUEST_BODY
          - REQUEST_TRAILERS
          - RESPONSE_HEADERS
          - RESPONSE_BODY
          - RESPONSE_TRAILERS
          timeout: 1s
        matchCondition:
          celExpression: 'true'
        name: httpbin-apigee-extension-chain
      forwardingRules:
      - https://www.googleapis.com/compute/v1/projects/123456789012/global/forwardingRules/ep-test-fw-rule
      loadBalancingScheme: EXTERNAL_MANAGED
      metadata:
        apigee-extension-processor: ep-test-proxy
        apigee-request-body: true
        apigee-response-body: true
      name: projects/extension-processor-test/locations/global/lbTrafficExtensions/global-xlb-httpbin-apim-policy
      updateTime: '2025-03-22T00:29:31.183275055Z'

      向负载均衡器发送请求

      如需测试负载均衡器和扩展处理器设置,请向负载均衡器发送请求:

      curl "https://LB_DOMAIN_NAME/get"

      其中 LB_DOMAIN_NAME 是您用于负载均衡器和 SSL 证书的域名。如果您使用的是 nip.io,则域名将类似于 IP_ADDRESS.nip.io

      响应应类似如下所示:

      {"status": 200,
        {
          "args": {},
          "headers": {
            ...
          },
          "origin": "173.93.50.108",
          "url": "https://httpbin.org/get"
        }
      }

      将政策与 Extension Processor 搭配使用

      本部分介绍如何将政策与 Extension Processor 搭配使用。

      在此示例中,为扩展处理器配置了 VerifyAPIkeyAssignMessage 政策。这些政策用于验证发送给 Apigee 的请求中包含的 API 密钥,并向对后端服务的调用请求标头中注入 Google令牌。对于使用 Apigee 扩展处理器来授权和验证对其 Apigee 服务的请求的 API 提供方,此方案非常有用,可无缝注入后端服务(如 Vertex AI)所需的 Google 身份验证令牌

      添加 VerifyAPIKey 政策以进行 API 密钥验证

      以下部分介绍了如何使用 Extension Processor 通过 VerifyAPIKey 政策验证对后端服务的调用的 API 密钥:

      1. 将 VerifyAPIKey 政策附加到 Extension Processor。
      2. 创建 API 产品
      3. 创建开发者应用和应用凭证。
      4. 使用 API 密钥向负载均衡器发送请求。

      将 VerifyAPIKey 政策附加到代理

      如需将 VerifyAPIKey 政策附加到扩展处理器代理,请执行以下操作:

      1. Cloud 控制台中的 Apigee 界面中,前往开发标签页,然后选择您在之前的步骤中创建的扩展处理器代理。
      2. 政策部分中,点击 + 添加政策
      3. 添加政策窗格中,从政策列表中选择 VerifyAPIKey
      4. VerifyAPIKey 窗格中,使用以下值填写政策名称显示名部分中的必填字段:
        • 政策名称:输入政策名称。例如 VA-verify-api-key
        • 显示名称:输入要在界面中使用的政策名称。例如 VA-verify-api-key
      5. 点击创建

        Extension Processor 代理中包含的 VerifyAPIKey 政策的 XML 规范应类似于以下内容:

          <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
          <VerifyAPIKey continueOnError="false" enabled="true" name="VA-verify-api-key">
            <DisplayName>VA-verify-api-key</DisplayName>
            <Properties/>
            <APIKey ref="request.queryparam.x-api-key"/>
          </VerifyAPIKey>
      6. 部署新的代理修订版本。

      创建 API 产品

      如需创建 API 产品并为您的服务配置 API 操作集,请执行以下操作:

      1. 按照创建 API 产品中的步骤操作,为您的服务创建 API 产品。您可以根据需要配置 API 产品的产品详细信息
      2. 按照操作中的步骤,根据以下规范向 API 产品添加 API 操作集:
        • 来源:选择 API 代理,然后选择您在之前的步骤中创建的代理。
        • 操作:配置以下路径和方法:
          • 路径:/get,方法:GET
          • 路径:/PROXY_NAME,方法:GET

            PROXY_NAME 是您在之前的步骤中创建的代理的名称。

      创建开发者应用和应用凭证

      为新创建的 API 产品创建开发者应用和应用凭证:

      1. 前往 Google Cloud 控制台中的 Apigee API Management 页面:

        Apigee API Management

      2. 创建开发者:
        1. 依次选择分发 > 开发者
        2. 开发者页面上,点击 + 创建
        3. 添加开发者页面中,使用您希望使用的任何值填写必填字段。
        4. 点击添加
      3. 创建应用:
        1. 依次选择分发> 应用
        2. 应用页面上,点击 + 创建
        3. 创建应用页面上,使用以下值填充应用详情部分中的必填字段:
          • 应用名称:输入应用的名称。例如,ext-proc-app
          • 开发者:选择您在上一步创建的开发者,或从列表中选择其他开发者。
        4. 应用凭据部分,点击 + 添加凭据
        5. 凭据部分中,从到期列表框中选择永不
        6. 产品部分中,点击 + 添加产品以显示添加产品窗格。
        7. 选择您在上一步中创建的 API 产品。
        8. 点击确定
        9. 点击添加以关闭添加商品窗格。
        10. 点击创建
      4. 应用详情页面的凭据部分中,点击 以显示密钥的值。

        复制 Key 值。您将在后续步骤中使用此密钥对您的服务执行 API 调用。

      5. 应用详情页面的凭据部分中,点击 以显示应用 Secret 的值。

      使用 API 密钥向负载均衡器发送请求

      如需测试 API 密钥验证,请使用 API 密钥向负载均衡器发送请求:

      curl "https://LB_DOMAIN_NAME/get"

      其中,LB_DOMAIN_NAME 是您用于负载均衡器和 SSL 证书的域名。

      在没有 API 密钥的情况下,响应应失败。

      使用请求中的 API 密钥向负载均衡器发送另一个请求:

      curl "https://LB_DOMAIN_NAME/get?key=API_KEY"

      其中:

      • LB_DOMAIN_NAME 是您用于负载均衡器和 SSL 证书的域名。
      • API_KEY 是在之前的步骤中显示的开发者应用凭据中的 API 密钥。

      响应应表明端点已成功获得授权。这表示扩展处理器已验证 API 密钥,并且 Apigee 代理现在可以处理该请求。

      为 Google 身份验证添加 AssignMessage 政策

      如果您想使用扩展处理器为经过 Google 身份验证的服务提供 API 管理,可以使用 AssignMessage 政策将 Google 访问令牌或 Google ID 令牌注入到发送给后端服务的请求中。

      以下部分介绍了如何使用 Extension Processor 通过 AssignMessage 政策将 Google 身份验证令牌注入到发送给后端服务的请求中:

      1. 将 AssignMessage 政策附加到代理。
      2. 向负载均衡器发送请求以测试令牌注入。

      将 AssignMessage 政策附加到代理

      如需将 AssignMessage 政策添加到代理,请执行以下操作:

      1. Cloud 控制台的 Apigee 界面中,前往开发标签页,然后选择您在之前的步骤中创建的代理。
      2. 政策部分中,点击 + 添加政策
      3. 添加政策窗格中,从政策列表中选择分配消息
      4. 分配消息窗格中,使用以下值填写政策名称显示名称部分中的必填字段:
        • 政策名称:输入政策名称。例如 AM-auth
        • 显示名:输入要在界面中显示的政策名称。例如 AM-auth
      5. 点击创建
      6. <Set> 元素下,添加以下子元素:
        <Set>
            <Authentication>
            <HeaderName>Authorization</HeaderName>
            <GoogleAccessToken>
                <Scopes>
                <Scope>https://www.googleapis.com/auth/cloud-platform</Scope>
                </Scopes>
            </GoogleAccessToken>
            </Authentication>
        </Set>
      7. 点击保存
      8. 使用 Google 服务账号部署新修订版本。

      服务账号用于生成 Google 访问令牌,并将其注入到 API 调用 Google 后端服务的请求标头中。

      向负载均衡器发送请求以测试令牌注入

      如需确认令牌注入是否正常,请向负载均衡器发送请求:

      curl "https://LB_DOMAIN_NAME/get"

      其中 LB_DOMAIN_NAME 是您用于负载均衡器和 SSL 证书的域名。

      响应应类似如下所示:

      {
        ...
        "headers": {
          "Accept": "*/*",
          "Authorization": "Bearer ya29.c.c0ASRK0Gbw03y9cfvxL11DxaRYBQUU18SmUP4Vu63OckHI5cX7wJ4DmGMG2vbDDS69HXJHqMj-lak4tcqOsJGmE65crn2gNuJLanXidwM8",
          "First": "1.0",
          "Host": "apigee-ext-proc-test.apigee.net",
          "Second": "1.0",
          "Sum": "2",
          "User-Agent": "curl/8.7.1",
          "X-Api-Key": "McYcHGR3PTSGLXExvKADwQ1JJeCjgPDUvAakCl0rJKCFaX0Y",
          "X-Cloud-Trace-Context": "0fd3dadc2a3c328fa968d5f5f1434c29/18300783092696918345"
        },
        ...
      }

      响应应显示已成功将 Google 身份验证令牌注入到请求标头中。

      成功应用 AssignMessage 政策后,示例场景中客户端向 Apigee 发出的成功请求(包含 API 密钥)会进一步修改,以在请求标头中包含 Google 身份验证令牌,这是 Google身份验证后端服务所要求的。