在ASP.NET MVC 5中混合cookie身份验证ASP.NET Identity和JWT?

时间:2018-10-01 19:21:58

标签: asp.net asp.net-mvc cookies jwt owin

我有一个ASP.NET MVC 5(.NET Framework 4.5.2,非核心)Web应用程序,使用默认的基于ASP.NET Identity Cookie的身份验证。用户可以登录Account/Login并在浏览器中设置一个cookie。我可以使用Authorize属性来保护动作,甚至可以指定哪些角色可以访问它。这是MVC 5模板中的所有标准内容。

现在,我需要添加一个带有一些Web Api 2控制器的API(继承ApiController),并且我想使用JWT令牌,因为这既将由Web应用程序的用户通过浏览器请求调用,也可以从外部CLI工具。我想对Authorize属性使用角色,就像在MVC控制器中一样。

因此,理想情况下,当请求ApiController操作时,Authorize属性将检查是否存在有效的cookie会话,如果存在且与角色匹配,则允许该用户。如果请求中没有cookie(来自非浏览器环境的http请求),它将检查JWT的存在。生成的JWT有效负载将包含用户所处的角色,因此中间件应该能够从中读取它们并验证访问权限。

我已经在Google上搜索了很多,但是几乎所有有关ASP.NET Core的指南。

0 个答案:

没有答案