将 AWS API 网关密钥名称发送到服务器
Send AWS API Gateway Key Name to Server
假设我有一个 AWS API 网关。我在所述网关中有一个资源需要使用网关 API 密钥。我希望我的服务器知道我的各种密钥中的哪一个被用于身份验证(仅用于日志记录;没有基于此的访问控制发生)。
如何在发送到服务器的请求中包含网关的名称API?
API 附加到 API 网关的密钥必须是唯一的。来自 docs:
API key values must be unique. If you try to create two API keys with different names and the same value, API Gateway considers them to be the same API key.
没有这样的 header 来指定密钥的名称。您可以创建自己的自定义 header 并在其中添加此信息,但无法保证使用给定的 API 密钥发送正确的名称。您可能希望使用来自服务器的 AWS 开发工具包实施调用以检索 API 密钥的名称。
如果您使用的是 Lambda 授权函数,您可以在此函数中获取 API 键的名称并将其作为 header 转发到后端服务器。
首先,您提到记录哪些密钥用于身份验证。 API GW API 密钥旨在与使用计划一起使用,而不是 authentication/authorization (link).
For user authentication and authorization, don't use API keys. Use an IAM role, a Lambda authorizer, or an Amazon Cognito user pool.
我认为是因为这个原因,AWS没有将密钥进一步转发到后端。此外,如果您使用了 Lambda 或 Cognito 等授权方之一,您的后端将有办法记录经过身份验证的身份。
如果你真的想记录 API 键,我想你可以使用 映射模板 明确告诉 API GW 转发x-api-key
header.
假设我有一个 AWS API 网关。我在所述网关中有一个资源需要使用网关 API 密钥。我希望我的服务器知道我的各种密钥中的哪一个被用于身份验证(仅用于日志记录;没有基于此的访问控制发生)。
如何在发送到服务器的请求中包含网关的名称API?
API 附加到 API 网关的密钥必须是唯一的。来自 docs:
API key values must be unique. If you try to create two API keys with different names and the same value, API Gateway considers them to be the same API key.
没有这样的 header 来指定密钥的名称。您可以创建自己的自定义 header 并在其中添加此信息,但无法保证使用给定的 API 密钥发送正确的名称。您可能希望使用来自服务器的 AWS 开发工具包实施调用以检索 API 密钥的名称。
如果您使用的是 Lambda 授权函数,您可以在此函数中获取 API 键的名称并将其作为 header 转发到后端服务器。
首先,您提到记录哪些密钥用于身份验证。 API GW API 密钥旨在与使用计划一起使用,而不是 authentication/authorization (link).
For user authentication and authorization, don't use API keys. Use an IAM role, a Lambda authorizer, or an Amazon Cognito user pool.
我认为是因为这个原因,AWS没有将密钥进一步转发到后端。此外,如果您使用了 Lambda 或 Cognito 等授权方之一,您的后端将有办法记录经过身份验证的身份。
如果你真的想记录 API 键,我想你可以使用 映射模板 明确告诉 API GW 转发x-api-key
header.