<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
您可以通过附加 VerifyAPIKey 政策,为 API 设置 API 密钥验证。通过 验证 API 密钥政策仅需要设置 API 密钥在 客户端请求API 代理将检查您指定的位置,并提取 API 密钥。如果 API 密钥不在预期位置,系统将抛出错误并拒绝请求。API 密钥可以位于查询参数、表单参数或 HTTP 标头中。
例如,以下政策配置会将预期密钥位置定义为名为 apikey
的查询参数。成功的请求必须将 API 密钥作为查询参数附加到请求中,例如 ?apikey=Y7yeiuhcbKJHD790
。
如需验证 API 密钥,请创建以下政策:
<VerifyAPIKey name="APIKeyValidation"> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
此政策可附加到您需要保护的任何 API 中。
如需了解此政策类型的综合文档,请参阅政策参考主题VerifyAPIKey 政策。
API 代理会自动传递请求中存在的所有 HTTP 标头和查询参数。因此,在验证 API 密钥后,最好从消息中移除该密钥,这样 API 密钥就不会通过网络发送到后端服务。您可以使用 AssignMessage 类型的政策来实现此目的,如下所示:
<AssignMessage name="StripApiKey"> <DisplayName>Remove Query Param</DisplayName> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"></AssignTo> </AssignMessage>
政策附加
政策必须作为处理步骤附加到 API 代理流。将政策应用于请求 PreFlow 后,系统会对从客户端应用的 API 代理收到的每个请求验证 API 密钥。验证完成后,该 API 密钥会从出站请求中删除。
将政策附加到要保护的 API 代理的 ProxyEndpoint,如下所示:
<ProxyEndpoint name="default"> <PreFlow> <Request> <Step><Name>APIKeyValidation</Name></Step> <Step><Name>StripApiKey</Name></Step> </Request> </PreFlow>
附加政策后,请部署 API 代理。
使用有效的 API 密钥提交请求
作为组织的管理员,您可以按以下步骤检索任何应用的 API 密钥:
$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password
针对此调用返回的应用配置文件会提供使用方密钥(API 密钥)和密文。 使用方密钥值是向受保护 API 发出的请求中的 API 密钥使用的值。
例如,不含 API 密钥的请求会导致授权失败。
$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282
失败消息表示系统会检查 API 密钥的政策,但找不到有效的密钥:
OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey
当应用的使用方密钥作为查询参数添加时,预期结果是成功授权:
$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"
预期结果显示来自天气服务的成功响应。
修改请求中的 API 密钥值会导致授权失败:
$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"
导致:
OAuth Failure : Consumer Key is Invalid
请注意,作为组织的管理员,您可以检索在组织内注册的任何应用的使用方密钥:
$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password