首页 > 解决方案 > 访问令牌和刷新令牌的存储位置和方式

问题描述

我有一个 dotnet core 2.2 MVC web 应用程序,它使用 web api 来执行一些数据库查询。我已经为 web api 实现了基于 JWT 令牌的身份验证。令牌在 api 处生成,Web 应用程序已收到访问令牌、到期令牌和刷新令牌。我需要将此令牌详细信息存储在我的客户端,以便我可以使用它来访问 web api(到期前)或在令牌过期时使用刷新令牌生成新令牌。

对此的任何帮助将不胜感激。

标签: asp.net-core-mvcjwttoken

解决方案


以前的答案没有提供关于使用这些解决方案的原因的明确解释。

典型系统如下图所示,WEB 中使用了两种常见的客户端应用程序架构:

  • 在浏览器中运行的单页应用程序
  • 服务器端 MVC 应用程序

OAuth系统

在 SPA 的情况下,令牌存储在浏览器(会话存储或本地存储)中,并在到期时由浏览器或应用程序本身自动清除。仅供参考,由于安全原因,在 SPA 中无法获取刷新令牌。

如果是 MVC 应用程序(您的情况),事情会变得更加复杂。您有两个选择:将其存储在仅 http cookie 或某些外部会话存储中。Aspnet 核心支持这两种情况,但每种情况都有一些警告。这里有一篇好文章。简而言之,如果您担心 cookie 大小,请使用分布式会话存储,这会增加系统架构的复杂性。否则 cookie 是最简单的解决方案,并且在 aspnet 核心中默认启用,您只需设置options.StoreTokens = trueoptions.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme.


推荐阅读