使用承载令牌认证时设置asp.net CORE 2认证cookie

Jim*_*Jim 2 c# asp.net asp.net-core

我正在使用IdentityServer和JWT持有令牌来验证角度4/ASP.NET Core 2 Web应用程序中的请求.

验证一切正常,我可以获得持票令牌.不幸的是,该项目有几个页面(如hangfire仪表板),需要一个常规的表单身份验证cookie.

我如何通过编程方式创建一个cookie,并将其设置在角应用程序,这样,当我浏览到传统的网页,cookie的存在,并且用户可以进行身份​​验证?

常规登录页面仍然存在,我也可以使用表单身份验证登录,但我宁愿只使用承载令牌登录,然后获取身份验证cookie,就像我使用表单登录一样.

持票人令牌将确保未经身份验证的用户无法获取cookie,该部分已经被处理.我只需要知道如何创建cookie并将其返回.

Moh*_*our 6

您可以在一个项目中同时进行Cookie和JWT身份验证.首先在ConfigureServices方法中添加cookie和JWT身份验证:

services.AddAuthentication()
  .AddCookie(options => options.SlidingExpiration = true)
  .AddJwtBearer(options =>
  {
    // JWT setup
  });
Run Code Online (Sandbox Code Playgroud)

在Configure方法中添加app.UseAuthentication();

并把

[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
Run Code Online (Sandbox Code Playgroud)

在您希望将身份验证方案更改为JWT的控制器之上.

有关详细信息,请阅读ASP.NET Core 2中的两个AuthorizationSchemes.