本页面适用于 Apigee 和 Apigee Hybrid。
查看 Apigee Edge 文档。
本页面介绍了如何配置 Apigee Extension Processor,以使用启用 Service Extensions 的负载均衡器为 API 流量启用 API 政策强制执行。
如需详细了解将 Apigee Extension Processor 用于 API 管理的建议应用场景和优势,请参阅 Apigee Extension Processor 概览。
Apigee Extension Processor 是流量扩展程序(一种服务扩展程序类型),可让您使用 Cloud Load Balancing 将调用从应用负载均衡器的数据处理路径发送到 Apigee Extension Processor。配置了负载均衡器和流量扩展程序后,API 流量将由负载均衡器进行处理。Apigee Extension Processor 中的政策使用流量扩展程序调用应用于 API 流量。
以下部分将指导您完成配置 Apigee Extension Processor 关键元素所需的步骤:
准备工作
在开始设置 Apigee Extension Processor 之前,请务必完成以下任务:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Apigee, Compute Engine, and Network Services APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Apigee, Compute Engine, and Network Services APIs.
安装 Google Cloud CLI。
安装 Google Cloud CLI 后,运行
gcloud components update
命令以获取最新的 gcloud 组件。使用
1-15-0-apigee-2
或更高版本预配 Apigee 实例(如果尚未预配)。您可以在 Google Cloud 控制台的 Apigee 界面的实例详情页面中查看实例版本。前往 Google Cloud 控制台中的实例 页面,以选择实例并查看其详情:
您可以将 Extension Processor 与订阅或Pay-as-you-go Apigee 组织搭配使用。如果您不确定您使用的是订阅还是随用随付 Apigee 组织,请与您的 Apigee 组织管理员联系。如需详细了解如何预配付费 Apigee 实例,请参阅准备工作。
- 确认您计划使用的 Apigee 实例中已启用 VPC 和子网。前往 Google Cloud 控制台中的 VPC 网络页面:
-
创建和管理服务账号:Service Account Admin (
roles/iam.serviceAccountAdmin
) -
创建和管理服务扩展:Service Extensions Admin (
roles/networkservices.serviceExtensionsAdmin
) -
创建和管理网络端点组 (NEG):Compute Instance Admin (
roles/compute.instanceAdmin
) -
创建和管理网络资源:Compute Network Admin (
roles/compute.networkAdmin
) -
创建和管理后端服务:Compute Load Balancer Admin (
roles/compute.loadBalancerAdmin
) -
创建和管理 Apigee 资源:Apigee Org Admin (
roles/apigee.admin
) PROJECT_ID
是包含 Apigee 实例的项目的 ID。REGION
是 Apigee 实例的 Google Cloud 区域。INSTANCE
是您的 Apigee 实例的名称。VPC_NETWORK_NAME
是 Google Cloud 项目中要用于 Apigee Extension Processor 的 VPC 网络的名称。SUBNET
是 Google Cloud 项目中要用于 Apigee Extension Processor 的子网的名称。- 将
gcloud
配置设置为使用当前项目:gcloud config set project PROJECT_ID
其中,PROJECT_ID 是包含 Apigee 实例的项目的 ID。
- 创建全局静态 IP 地址:
gcloud compute addresses create IP_ADDRESS --ip-version=IPV4 --global
其中,IP_ADDRESS 是要创建的 IP 地址的名称。该名称必须与正则表达式
(?:a-z?)
匹配。 - 获取 IP 地址并将其保存为环境变量:
IP=$(gcloud compute addresses describe IP_ADDRESS --format="get(address)" --global)
其中,IP_ADDRESS 是在之前步骤中创建的 IP 地址的名称。
- 为
nip.io
(这是一种为 IP 地址提供通配符 DNS 记录的第三方服务)创建 TLS 证书:gcloud compute ssl-certificates create SSL_CERT_NAME \ --domains="nip.io"
其中,SSL_CERT_NAME 是要创建的证书的名称。
- 创建 NEG:
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=INTERNET_FQDN_PORT \ --default-port=443 \ --global
其中,NEG_NAME 是要创建的 NEG 的名称。
- 将用于 httpbin.org 的端点添加到 NEG:
gcloud compute network-endpoint-groups update NEG_NAME \ --add-endpoint=fqdn=httpbin.org,port=443 \ --global
其中,NEG_NAME 是在之前步骤中创建的 NEG 的名称。
- 创建后端服务:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global
其中,BACKEND_SERVICE_NAME 是要创建的后端服务的名称。
- 将 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 的名称。
- URL_MAP_NAME 是要创建的网址映射的名称。
- BACKEND_SERVICE_NAME 是在之前步骤中创建的后端服务的名称。
- TARGET_PROXY_NAME 是要创建的目标代理的名称。
- URL_MAP_NAME 是在之前步骤中创建的网址映射的名称。
- SSL_CERT_NAME 是在之前步骤中为
nip.io
创建的 SSL 证书的名称。 - FORWARDING_RULE_NAME 是要创建的转发规则的名称。
- IP_ADDRESS 是在之前步骤中创建的 NEG 端点的 IP 地址的名称。
- TARGET_PROXY_NAME 是在之前步骤中创建的目标代理的名称。
- 使用以下命令创建 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"
环境列表应包含您刚刚创建的环境。
- 将新创建的环境附加到您的 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 分钟才能完成。
- 创建 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)。
- 将新环境附加到新环境组:
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 是在之前步骤中创建的环境的名称。
- 按照创建 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>
- 按照部署 API 代理中的步骤将代理部署到之前创建的环境中。
- 按照创建 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> <ProxyEndpoints> <ProxyEndpoint>default</ProxyEndpoint> </ProxyEndpoints> </APIProxy>
- 在代理中配置
EventFlow
:<?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> <ProxyEndpoints> <ProxyEndpoint>default</ProxyEndpoint> <EventFlow name="EventFlow" content-type="text/event-stream"> <Response/> </EventFlow> <HTTPProxyConnection> <Properties/> <URL>https://httpbin.org/sse</URL> </HTTPProxyConnection> </ProxyEndpoints> </APIProxy>
- 按照部署 API 代理中的步骤将代理部署到之前创建的环境中。
- 获取 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
- 在 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
- 创建指向 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 是要创建的后端服务的名称。
- 添加 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 是在之前步骤中创建的后端服务的名称。
- 为后端服务启用日志记录:
gcloud compute backend-services update PSC_NEG_BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=1.0
其中,PSC_NEG_BACKEND_SERVICE 是在之前步骤中创建的后端服务的名称。
- EXT_PROC_NAME 此名称必须与在之前步骤中创建的 API 代理的名称一致。
- FORWARDING_RULE_NAME 是在之前步骤中创建的转发规则的名称。
- ENV_GROUP_HOSTNAME 是用于环境组的域名。
- PSC_NEG_BACKEND_SERVICE 是在之前步骤中创建的后端服务的名称。
在 Google Cloud 控制台中,前往代理开发 > API 代理页面。
- 选择您在创建扩展程序处理器部分中创建的 Extension Processor 代理。
- 点击开发标签页。
- 在导航窗格中,点击政策部分中的 。
- 在创建政策对话框中,从政策列表中选择 VerifyAPIKey。
- 在 VerifyAPIKey 窗格中,使用以下值填写名称和显示名称部分中的必填字段:
- 名称:输入政策名称。例如
VA-verify-api-key
。 - 显示名称:输入要在界面中使用的政策名称。例如
VA-verify-api-key
。
- 名称:输入政策名称。例如
- 点击创建。
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>
- 部署新代理修订版本。
- 按照创建 API 产品中的步骤操作,为您的服务创建 API 产品。您可以为 API 产品配置所需的任何产品详情。
- 按照操作中的步骤操作,根据以下规范向 API 产品添加 API 操作集:
- 来源:
在 Google Cloud 控制台中,前往分发 > API 产品页面。
选择在之前步骤中创建的 API 产品。 - 操作:点击修改并配置以下路径和方法:
- 路径:
/get
,方法:GET
- 路径:
/PROXY_NAME
,方法:GET
PROXY_NAME 是在之前步骤中创建的代理的名称。
- 路径:
- 来源:
前往 Google Cloud 控制台中的 Apigee API Management 页面:
- 创建开发者:
- 依次选择分发 > 开发者。
- 在开发者页面上,点击 + 创建。
- 在添加开发者页面中,使用您希望使用的任何值填写必填字段。
- 点击添加。
- 创建应用:
- 依次选择分发> 应用。
- 在应用页面上,点击 + 创建
- 在创建应用页面上,使用以下值填充应用详情部分中的必填字段:
- 应用名称:输入应用的名称。例如
ext-proc-app
- 开发者:选择您在上一步创建的开发者,或从列表中选择其他开发者。
- 应用名称:输入应用的名称。例如
- 在应用凭据部分,点击 + 添加凭据。
- 在凭证部分中,从到期列表框中选择永不。
- 在产品部分中,点击 + 添加产品以显示添加产品窗格。
- 选择在之前步骤中创建的 API 产品。
- 点击确定。
- 点击添加以关闭添加产品窗格。
- 点击创建。
- 在应用详情页面的凭据部分中,点击
visibility_off 以显示密钥的值。
复制
Key
值。您将在后续步骤中使用此密钥对您的服务执行 API 调用。 - 在应用详情页面的凭证部分中,点击 visibility_off 以显示应用密钥的值。
- LB_DOMAIN_NAME 是用于负载均衡器和 SSL 证书的域名。
- API_KEY 是在之前步骤中显示的开发者应用凭证中的 API 密钥。
在 Google Cloud 控制台中,前往代理开发 > API 代理页面。
- 选择您在创建扩展程序处理器部分中创建的 Extension Processor 代理。
- 点击开发标签页。
- 在导航窗格中,点击政策部分中的 。
- 在创建政策对话框中,从政策列表中选择 AssignMessage。
- 在分配消息窗格中,使用以下值填充名称和显示名称部分中的必填字段:
- 名称:输入政策名称。例如
AM-auth
。 - 显示名称:输入要在界面中显示的政策名称。例如
AM-auth
。
- 名称:输入政策名称。例如
- 点击创建。
- 在
<Set>
元素下,添加以下子元素:<Set> <Authentication> <HeaderName>Authorization</HeaderName> <GoogleAccessToken> <Scopes> <Scope>https://www.googleapis.com/auth/cloud-platform</Scope> </Scopes> </GoogleAccessToken> </Authentication> </Set>
- 点击保存。
- 使用 Google 服务账号部署新修订版本。
所需的角色
如需获得安装 Apigee Extension Processor 所需的权限,请让您的管理员为您授予组织的以下 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
其中:
如需确认环境变量设置正确,请运行以下命令并查看输出:
echo $PROJECT_ID $ORG_NAME $REGION $INSTANCE $VPC_NETWORK_NAME $SUBNET
配置身份验证令牌
如需配置身份验证令牌,请运行以下命令:
export TOKEN=$(gcloud auth print-access-token)
echo $TOKEN
为后端服务配置负载均衡器
以下部分使用 httpbin.org 作为示例,介绍了为后端服务设置全球外部应用负载均衡器所需的步骤:
创建全球外部应用负载均衡器
如需创建负载平衡器,请执行以下操作:
创建网络端点群组 (NEG)
如需为负载均衡器创建网络端点组 (NEG),请执行以下操作:
创建后端服务
如需创建由负载均衡器公开的后端服务,请执行以下操作:
创建网址映射
如需在负载均衡器与后端服务之间创建网址映射,请使用以下命令:
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE_NAME \ --global
其中:
创建目标代理
如需为负载均衡器创建目标代理,请使用以下命令:
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
其中:
创建全局转发规则
如需为负载均衡器创建全局转发规则,请使用以下命令:
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
其中:
配置 Apigee Extension Processor
以下部分介绍了设置 Apigee Extension Processor 所需的步骤:
创建 Apigee 环境
创建 Extension Processor 代理
Extension Processor 代理是一种 Apigee API 代理,用于将 API 管理政策应用于负载均衡器流量。您可以创建无目标代理或支持服务器发送事件 (SSE) 的代理。如需详细了解如何将 SSE 与 Apigee 搭配使用,请参阅服务器发送的事件。
如需创建 Apigee API 代理以与 Extension Processor 负载均衡器搭配使用,请执行以下操作:
无目标代理
支持 SSE 的代理
配置流量扩展程序
本部分介绍如何使用以下步骤为 Extension Processor 配置流量服务扩展程序:
创建 Apigee Private Service Connect 网络端点群组
在本部分中,您将创建一个 Apigee Private Service Connect (PSC) 网络端点组 (NEG),用于连接到您的 Apigee 实例。如需详细了解 PSC,请参阅南向网络模式。
如需创建 Apigee PSC NEG,请执行以下操作:
创建负载均衡器服务扩展程序
创建负载均衡器服务扩展程序时,您可以通过更改描述扩展程序的各个字段的值来自定义扩展程序处理器代理的行为,如下表所示:
正文处理 | 支持的事件 | 元数据 | 发送模式 |
---|---|---|---|
请求和响应正文处理 |
|
|
|
仅限请求正文处理 |
|
|
|
仅限响应正文处理 |
|
|
|
在此步骤中,您将创建一个支持请求和响应正文处理的负载均衡器服务扩展程序:
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" } }'
其中:
此操作可能需要几分钟才能完成。
如需确认服务扩展程序已创建,请使用以下命令:
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'
向负载均衡器发送请求
如需测试负载均衡器和 Extension Processor 设置,请向负载均衡器发送请求:
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 搭配使用。
在此示例中会为 Extension Processor 配置 VerifyAPIkey 和 AssignMessage 政策。这些政策用于验证发送给 Apigee 的请求中包含的 API 密钥,并在对后端服务的调用的请求标头中注入 Google令牌。对于使用 Apigee Extension Processor 授权和验证对其 Apigee 服务的请求并无缝注入后端服务(如 Vertex AI)所需的Google 身份验证令牌的 API 提供方,此场景非常有用。
添加 VerifyAPIKey 政策以进行 API 密钥验证
以下部分介绍了如何使用 Extension Processor 通过 VerifyAPIKey 政策验证对后端服务的调用的 API 密钥:
将 VerifyAPIKey 政策附加到代理
如需将 VerifyAPIKey 政策附加到 Extension Processor 代理,请执行以下操作:
创建 API 产品
如需为您的服务创建 API 产品并配置 API 操作集,请执行以下操作:
创建开发者应用和应用凭证
如需为新创建的 API 产品创建开发者应用和应用凭证,请执行以下操作:
使用 API 密钥向负载均衡器发送请求
如需测试 API 密钥验证,请使用 API 密钥向负载均衡器发送请求:
curl "https://LB_DOMAIN_NAME/get"
其中,LB_DOMAIN_NAME 是用于负载均衡器和 SSL 证书的域名。
在没有 API 密钥的情况下,响应应失败。
在请求中使用 API 密钥向负载均衡器发送另一个请求:
curl "https://LB_DOMAIN_NAME/get?key=API_KEY"
其中:
响应应表明对端点的授权成功。这表示 Extension Processor 已验证 API 密钥,并且 Apigee 代理现在可以处理请求。
添加 AssignMessage 政策以用于 Google 身份验证
如果您要使用 Extension Processor 为进行 Google 身份验证的服务提供 API 管理,可以使用 AssignMessage 政策将 Google 访问令牌或 Google ID 令牌注入到发送给后端服务的请求中。
以下部分介绍了如何使用 Extension Processor 通过 AssignMessage 政策将 Google 身份验证令牌注入到发送给后端服务的请求中:
将 AssignMessage 政策附加到代理
如需将 AssignMessage 政策添加到代理,请执行以下操作:
服务账号用于生成 Google 访问令牌,并将其注入到对 Google 后端服务的 API 调用的请求标头中。
向负载均衡器发送请求以测试令牌注入
如需确认令牌注入正常工作,请向负载均衡器发送请求:
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身份验证的后端服务所要求的)。