为 API 网关的用户使用 API 密钥对
Use API key pairs for users for API gateway
我有一个 Web 应用程序 运行 它的 API 都在 AWS API 网关 后面。它目前使用 Cognito 令牌 进行身份验证。
现在我希望用户能够设置 API 密钥对(id 和 secret),这样他们将有另一种方法来以编程方式验证和访问他们的帐户,类似于此(https://support.binance.com/hc/en-us/articles/360002502072-How-to-create-API).
我知道一些解决方案(非最佳IMO,如果我错了请纠正我):
可以使用来自 API 网关的 - API 密钥,但根据文档,它并不用于身份验证。
- 我们可以为其使用 IAM 凭据,但我不确定将 IAM 凭据分配给用户(而不是内部开发人员)是否是一种好的做法。
使用 API 网关实现类似 (https://support.binance.com/hc/en-us/articles/360002502072-How-to-create-API) 的最佳方法是什么?
我建议实施基于请求的 Lambda 授权方 [1]。
查看您的示例,您似乎还希望执行一些自定义的安全策略(即,基于 IP 地址的检查,启用特定的 APIs)。
- 您的 Cognito 用户池仍将用于对您的 Web 应用程序进行基于 username/password 的身份验证。
- 我的想法是将用户的 API 密钥和自定义安全策略存储在单独的数据存储(例如 DynamoDB)中。[=20=]
- 然后用户可以在调用 API 时使用这些 API 键。
- API 网关将触发 Lambda 授权方,Lambda 授权方负责验证传入请求中的 API 密钥,并根据您的自定义安全策略生成 IAM 策略。
[1] 请参阅 https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html
中名为 "Create a Lambda Function of a Lambda Authorizer of the REQUEST type" 的部分
我有一个 Web 应用程序 运行 它的 API 都在 AWS API 网关 后面。它目前使用 Cognito 令牌 进行身份验证。
现在我希望用户能够设置 API 密钥对(id 和 secret),这样他们将有另一种方法来以编程方式验证和访问他们的帐户,类似于此(https://support.binance.com/hc/en-us/articles/360002502072-How-to-create-API).
我知道一些解决方案(非最佳IMO,如果我错了请纠正我):
-
可以使用来自 API 网关的
- API 密钥,但根据文档,它并不用于身份验证。
- 我们可以为其使用 IAM 凭据,但我不确定将 IAM 凭据分配给用户(而不是内部开发人员)是否是一种好的做法。
使用 API 网关实现类似 (https://support.binance.com/hc/en-us/articles/360002502072-How-to-create-API) 的最佳方法是什么?
我建议实施基于请求的 Lambda 授权方 [1]。 查看您的示例,您似乎还希望执行一些自定义的安全策略(即,基于 IP 地址的检查,启用特定的 APIs)。
- 您的 Cognito 用户池仍将用于对您的 Web 应用程序进行基于 username/password 的身份验证。
- 我的想法是将用户的 API 密钥和自定义安全策略存储在单独的数据存储(例如 DynamoDB)中。[=20=]
- 然后用户可以在调用 API 时使用这些 API 键。
- API 网关将触发 Lambda 授权方,Lambda 授权方负责验证传入请求中的 API 密钥,并根据您的自定义安全策略生成 IAM 策略。
[1] 请参阅 https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html
中名为 "Create a Lambda Function of a Lambda Authorizer of the REQUEST type" 的部分