使用API 密钥了解AWS API Gateway中的客户上 下文

问题描述 投票:0回答:2

我正在为我的lambda函数设置API网关并使用代理集成。我还为此API创建使用计划和API密钥,并与两个客户c1和c2共享API密钥k1和k2。

当客户使用密钥k2进行呼叫时,有没有办法从我的lambda函数中找到请求是由c2做出的?

我有一个实现RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent>的java处理程序

但不幸的是,我没有在APIGatewayProxyRequestEvent找到客户背景

java amazon-web-services aws-lambda aws-api-gateway api-key
2个回答
0
投票

API keys事件中,您将无法获得客户背景信息。对于不同的API,API密钥可以在多个usage plans之间共享。因此,它们不能与任何一个API部署相关联。如果您想这样做,您将自行管理它(例如,限制1个API到1个客户,API键映射到客户)。

我认为AWS没有提供这个的一个原因是因为API keys纯粹是为了usage plans。任何形式的身份验证/授权(用户识别都很重要)都需要使用IAMCognito user poolscustom authorizer等其他技术来完成。请参阅this

要在使用计划中包含API方法,您必须配置各个API方法以要求API密钥。对于用户身份验证和授权,请勿使用API​​密钥。使用IAM角色,Lambda授权程序或Amazon Cognito用户池。


0
投票

我会在方法请求和集成请求中将API密钥添加到HTTP标头,以便Lambda接收提供的API密钥,然后Lambda中的函数选择要运行的代码或根据读取的API密钥打印用户编号。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.