如何正确处理 AWS API Gateway 上的刷新令牌?

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

我们的API是在API Gateway + Lambda上开发的。授权逻辑位于每个 lambda 函数中。

为了处理授权,我们的 API 提供了短期访问令牌和非常长期的刷新令牌。之所以我们的刷新令牌寿命这么长是因为我们有匿名用户,所以他们无法重新登录。

为了提高安全性,我想让所有刷新令牌都可以刷新。为此,我们使用简单的逻辑“刷新令牌处理程序”(APIG 背后的 Lambda):

  1. 将当前令牌标记为已使用(将此信息存储在 SQL DB 中)
  2. 创建新代币
  3. 将新令牌返回给客户

但是当由于网络问题客户端无法保存新令牌时存在问题,但先前的令牌已标记为已使用。发生此问题是因为即使客户端关闭 HTTP 连接然后“刷新令牌处理程序”Lambda 对此一无所知并继续工作——它使数据库提交并将当前令牌标记为已使用。

有没有办法正确处理这个逻辑?当新令牌保存在客户端时,确认请求有可能的解决方法,但这个解决方案看起来不是最好的解决方案。

UPD:Lambda 授权函数与常规 lambda 存在相同的问题——即使连接已关闭——lambda 执行仍在继续。

amazon-web-services aws-api-gateway refresh-token
1个回答
0
投票

根据您的具体要求和用例,可以通过多种方式处理 AWS API Gateway 上的刷新令牌。但是,在 AWS API Gateway 上处理刷新令牌的一种常见方法是使用 Lambda 授权方,它们是 Lambda 函数,您可以使用它们来授权访问您的 API Gateway 资源。

这里概述了如何使用 Lambda 授权方处理 AWS API Gateway 上的刷新令牌:

创建 Lambda 授权函数:您可以创建一个 Lambda 函数,从请求标头中读取刷新令牌,对其进行验证,如果刷新令牌有效,则生成访问令牌。

将您的 API 网关配置为使用 Lambda 授权函数:您可以将您的 API 网关配置为使用 Lambda 授权函数来授权访问您的 API 资源。

使用访问令牌访问API资源:一旦Lambda授权函数生成访问令牌,您就可以使用它来访问API资源。

使用刷新令牌刷新访问令牌:当访问令牌过期时,可以使用刷新令牌生成新的访问令牌。您可以重复步骤 1-3 来处理新的访问令牌。

要实施此方法,您可以使用各种 AWS 服务,例如 AWS Lambda、Amazon API Gateway、Amazon Cognito 和 Amazon DynamoDB 等。例如,您可以在 Amazon DynamoDB 中存储刷新令牌和访问令牌,并使用 AWS Lambda 函数从 DynamoDB 读取和写入数据。

总的来说,在 AWS API Gateway 上处理刷新令牌需要仔细考虑安全性和可扩展性,因此彻底设计和测试您的实施以确保它满足您的要求非常重要。

丹佛豪华轿车服务

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