Amazon web services 为API网关的用户使用API密钥对

Amazon web services 为API网关的用户使用API密钥对,amazon-web-services,api,authorization,aws-api-gateway,api-key,Amazon Web Services,Api,Authorization,Aws Api Gateway,Api Key,我有一个web应用程序,它的API都在AWS API网关的后面运行。它当前使用Cognito令牌进行身份验证 现在,我希望用户能够设置API密钥对(id和secret),这样他们就可以用另一种方式以编程方式验证和访问他们的帐户,类似于此() 我知道一些解决方案(非最佳IMO,如果我错了,请纠正我): 可以使用来自API网关的API密钥,但根据文档,它并不用于身份验证 我们可以使用IAM凭据,但我不确定将IAM凭据分配给用户(而不是内部开发人员)是否是一种好的做法 使用API网关实现类似()的功能

我有一个web应用程序,它的API都在AWS API网关的后面运行。它当前使用Cognito令牌进行身份验证

现在,我希望用户能够设置API密钥对(id和secret),这样他们就可以用另一种方式以编程方式验证和访问他们的帐户,类似于此()

我知道一些解决方案(非最佳IMO,如果我错了,请纠正我):

  • 可以使用来自API网关的API密钥,但根据文档,它并不用于身份验证
  • 我们可以使用IAM凭据,但我不确定将IAM凭据分配给用户(而不是内部开发人员)是否是一种好的做法
    使用API网关实现类似()的功能的最佳方法是什么

    我建议实现一个基于请求的Lambda授权器[1]。 看看您的示例,您似乎也希望实施一些定制的安全策略(即,基于IP地址的检查,启用特定的API)

    • 您的Cognito用户池仍将用于对您的web应用程序进行基于用户名/密码的身份验证
    • 我的想法是将用户的API密钥和自定义安全策略存储在一个单独的数据存储器(例如DynamoDB)中
    • 然后用户可以在调用API时使用这些API键
    • API网关将触发Lambda授权人,Lambda授权人负责验证传入请求中的API密钥,并根据您的自定义安全策略生成IAM策略
    [1] 请参阅中名为“创建请求类型的Lambda授权者的Lambda函数”的部分