应该存储哪些 JWT 令牌以备后用?

Stu*_*rtM 5 authentication asp.net-mvc jwt amazon-cognito jwt-auth

我正在查看用于用户登录的已实现 Cognito,并希望更好地了解验证 JWT 的过程。

有问题的应用程序在 asp.net 4.5 MVC 上,与 .NET Core 无关。我可以在网上找到的有关 AWS Cognito 的唯一信息与 .NET 核心有关。

我理解此处记录的每种令牌类型的含义:https : //docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html# amazon-cognito-user-pools-using-the-id-token

我也了解验证 JWT 所需的步骤:https : //docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html

我的问题是需要验证哪个 JWT 以及在什么阶段?

示例 1.
用户登录,一旦登录,他们将返回访问、ID 和刷新令牌。
此时需要验证所有令牌还是仅需要验证访问令牌?

刷新令牌是否仅在尝试使用之前进行验证(以获得新的访问和 ID 令牌)?
或者是否应该根据任何授权的内容请求验证所有令牌?

哪些令牌应该存储在 FormsAuthentication Cookie 中以备后用?我们[Authorize]在 asp.net中使用标准模式。

Arm*_*min 0

推荐的方法是验证访问令牌,因为它包括身份验证和授权。您应该在提供对受保护资源的访问权限之前验证访问令牌。

id 令牌包含经过身份验证的用户的声明(信息)。它也可用于验证,但使用访问令牌的功能更强大,因为您可以创建范围来定义权限和角色。访问令牌也是许多 Cognito API 用户操作的输入。

AWS Cognito 遵循 OpenID Connect 协议,该协议构建在 Oauth2 之上,这些术语源自 Oauth2。

刷新令牌是一个长期令牌,用于检索较新的短期令牌(id 令牌、访问令牌)。目前,在 Cognito 的实施中,寿命较短的令牌每 1 小时就会过期,并且可以在用户池中配置刷新令牌。如果刷新令牌无效/过期,尝试检索较新的短期令牌将会失败,因此您不需要自己验证刷新令牌。

您可以存储刷新令牌(在某种会话中)以协助检索新的访问 ID 令牌,而无需重新进行身份验证。您还可以存储访问令牌,以便刷新令牌每小时仅使用一次(当访问令牌过期时),以防止颁发不必要的令牌和与 Cognito 的往返。如果您有兴趣保留用户声明(存储在 id 令牌的 JWT 中的用户信息),那么 id 令牌存储实际上取决于您的用例。