为API网关的用户使用API 密钥对

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

我有一个运行其API的Web应用程序都在AWS API Gateway之后。它目前使用Cognito令牌进行身份验证。

现在我希望用户能够设置API密钥对(id和secret),以便他们可以通过编程方式进行身份验证和访问帐户的替代方法,类似于此(https://support.binance.com/hc/en-us/articles/360002502072-How-to-create-API)。

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

  1. 可以使用API​​网关的API密钥,但根据文档,它不适用于身份验证。
  2. 我们可以使用IAM凭据,但我不确定将IAM凭据分配给用户(而不是内部开发人员)是否是一个好习惯。

使用API​​网关实现这样的(https://support.binance.com/hc/en-us/articles/360002502072-How-to-create-API)的最佳方法是什么?

amazon-web-services api authorization aws-api-gateway api-key
1个回答
1
投票

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

  • 您的Cognito用户池仍将用于基于用户名/密码的Web应用程序身份验证。
  • 我的想法是将用户的API密钥和自定义安全策略存储在单独的数据存储中(例如,DynamoDB)。
  • 然后,用户可以在调用API时使用这些API密钥。
  • API网关将触发Lambda授权程序,Lambda授权程序负责验证传入请求中的API密钥,并根据您的自定义安全策略生成IAM策略。

[1]请参阅https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html中名为“创建REQUEST类型的Lambda授权器的Lambda函数”一节

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