HTML5技术

ASP.NET Core集成现有系统认证 - 腾飞(Jesse)(2)

字号+ 作者:H5之家 来源:H5之家 2017-11-14 12:40 我要评论( )

注意ClaimsIdentity的AuthenticationScheme一定要与我们在UseAuthentication时设置的名称一样。否则Identity.IsAuthenticated无法正确设置为true,我们的授权就没有办法完成。 有了我们自定义的Validator之后,我们

注意ClaimsIdentity的AuthenticationScheme一定要与我们在UseAuthentication时设置的名称一样。否则Identity.IsAuthenticated无法正确设置为true,我们的授权就没有办法完成。
有了我们自定义的Validator之后,我们要对JwtBearer进行改造,去掉它默认的Validator,加上我们自己定义的这个。

services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(o => { o.SecurityTokenValidators.Clear(); o.SecurityTokenValidators.Add(new MyTokenValidator()); });

开始进行授权

为了给大家演示上面的功能,我们新建两个Controller,一个是Admin,另一个是Home。两者都需要用户有token才能正常访问,但是对于Admin我们需要用户具有admin的role才可以,否则会被拒绝返回403。

HomeController.cs

[Authorize] public class HomeController : Controller { public IActionResult Index() { return Ok(); } }

当Headers里面没有token 值的时候,API请求返回 401。

当Headers里面有token值时,API可以被正常访问。

我们又加了一个AdminController,不一样的是这次我们给Authorize加上了Role=”admin”,也就是只有拥有admin的Role才可以访问这个API。

[Authorize(Roles =)] public class AdminController : Controller { public IActionResult Index() { return Ok(); } }

当我们用user的token访问时,我们会得到403。

只有用admin的token,才能正常访问。

 

以是就是基于JWT Authentication来定制的我们自己的认证方案的一个基本思路,主要是实现OnMessageReceived来改造token的来源,以及定义自己的 ISecurityTokenValidator 来实现对token的验证。

本文首发于公众号jessetalk。 如需转载,请保留公众号二维码,谢谢。

 

更多精彩文章:

 

ASP.NET Core依赖注入全知道:   

我心中的ASP.NET Core新核心对象之WebHost(一)

极简版ASP .NET Core学习路径 

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • ASP.NET Core 2.0 in Docker on Windows Container - 毕殿卿

    ASP.NET Core 2.0 in Docker on Windows Container - 毕殿卿

    2017-10-27 15:00

  • Entity Framework Core 2.0 使用入门 - 晓晨Master

    Entity Framework Core 2.0 使用入门 - 晓晨Master

    2017-10-24 09:33

  • ASP.NET没有魔法——ASP.NET MVC IoC - 7m鱼

    ASP.NET没有魔法——ASP.NET MVC IoC - 7m鱼

    2017-10-21 11:06

  • AspectCore中的IoC容器和依赖注入 - Lemon丶

    AspectCore中的IoC容器和依赖注入 - Lemon丶

    2017-10-20 09:07

网友点评
j