代码之家  ›  专栏  ›  技术社区  ›  Zags

将AWS API网关密钥名称发送到服务器

  •  0
  • Zags  · 技术社区  · 4 年前

    假设我有一个AWS API网关。我在所述网关中有一个资源,需要使用网关API密钥。我想让我的服务器知道我的各种密钥中的哪一个被用来进行身份验证(只是用于日志记录;没有基于此的访问控制)。

    如何在发送到服务器的请求中包含网关API密钥的名称?

    0 回复  |  直到 4 年前
        1
  •  2
  •   Register Sole    4 年前

    首先,您提到了记录哪些密钥用于 身份验证 .API GW API密钥旨在与使用计划一起使用,而不是 身份验证/授权 ( link )。

    对于用户身份验证和授权,不要使用API密钥。使用IAM角色、Lambda授权人或Amazon Cognito用户池。

    我认为正是因为这个原因,AWS没有将密钥进一步转发到后端。此外,如果您使用了Lambda或Cognito这样的授权者,您的后端将有一种方法来记录经过身份验证的身份。

    如果你真的想记录API密钥,我认为你可以使用 映射模板 明确告诉API GW转发 x-api-key 头球

        2
  •  1
  •   Ervin Szilagyi    4 年前

    附加到API网关的API密钥必须是唯一的。来自 docs :

    API键值必须是唯一的。如果您尝试创建两个具有不同名称和相同值的API密钥,API网关会认为它们是同一个API密钥。

    没有这样的标头来指定键的名称。您可以创建自己的自定义头,在其中添加此信息,但无法保证使用给定的API密钥发送正确的名称。您可能希望从服务器使用AWS SDK实现调用,以检索API密钥的名称。

    如果您使用的是Lambda authorizer函数,您可以在该函数中获取API密钥的名称,并将其作为头转发到后端服务器。

    推荐文章