asp.net core 2.0 web api基于JWT自定义策略授权
2017-09-17 08:35
1411 查看
JWT(json web token)是一种基于json的身份验证机制,流程如下:
通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端验证通过即可能获取想要访问的资源。关于JWT的技术,可参考网络上文章,这里不作详细说明,
这篇博文,主要说明在asp.net core 2.0中,基于jwt的web api的权限设置,即在asp.net core中怎么用JWT,再次就是不同用户或角色因为权限问题,即使援用Token,也不能访问不该访问的资源。
基本思路是我们自定义一个策略,来验证用户,和验证用户授权,PermissionRequirement是验证传输授权的参数。在Startup的ConfigureServices注入验证(Authentication),授权(Authorization),和JWT(JwtBearer)
自定义策略:
已封闭成AuthorizeRolicy.JWT nuget包,并发布到nuget上: https://www.nuget.org/packages/AuthorizePolicy.JWT/ 源码如下:
JwtToken.cs
Permission.cs
PermissionRequirement.cs
自定义策略类PermissionHandler.cs
新建asp.net core 2.0的web api项目,并在项目添加AuthorizePolicy.JWT如图
先设置配置文件,用户可以定义密匙和发生人,订阅人
"Audience": {
"Secret": "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
"Issuer": "gsw",
"Audience": "everone"
}
在ConfigureServices中注入验证(Authentication),授权(Authorization),和JWT(JwtBearer)
Startup.cs
在需要授的Controller上添加授权特性
[Authorize("Permission")]
PermissionController类有两个方法,一个是登录,验证用户名和密码是否正确,如果正确就发放Token,如果失败,验证失败,别一个成功登后的无权限导航action。
下面定义一个控制台(.NetFramewrok)程序,用RestSharp来访问我们定义的web api,其中1为admin角色登录,2为system角色登录,3为错误用户密码登录,4是一个查询功能,在startup.cs中,admin角色是具有查询/api/values的权限的,所以用admin登录是能正常访问的,用system登录,能成功登录,但没有权限访问/api/values,用户名密码错误,访问/aip/values,直接是没有授权的
运行结果:
源码:https://github.com/axzxs2001/AuthorizePolicy.JWT
原文地址:http://www.cnblogs.com/axzxs2001/p/7530929.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端验证通过即可能获取想要访问的资源。关于JWT的技术,可参考网络上文章,这里不作详细说明,
这篇博文,主要说明在asp.net core 2.0中,基于jwt的web api的权限设置,即在asp.net core中怎么用JWT,再次就是不同用户或角色因为权限问题,即使援用Token,也不能访问不该访问的资源。
基本思路是我们自定义一个策略,来验证用户,和验证用户授权,PermissionRequirement是验证传输授权的参数。在Startup的ConfigureServices注入验证(Authentication),授权(Authorization),和JWT(JwtBearer)
自定义策略:
已封闭成AuthorizeRolicy.JWT nuget包,并发布到nuget上: https://www.nuget.org/packages/AuthorizePolicy.JWT/ 源码如下:
JwtToken.cs
Permission.cs
新建asp.net core 2.0的web api项目,并在项目添加AuthorizePolicy.JWT如图
先设置配置文件,用户可以定义密匙和发生人,订阅人
"Audience": {
"Secret": "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
"Issuer": "gsw",
"Audience": "everone"
}
在ConfigureServices中注入验证(Authentication),授权(Authorization),和JWT(JwtBearer)
Startup.cs
在需要授的Controller上添加授权特性
[Authorize("Permission")]
PermissionController类有两个方法,一个是登录,验证用户名和密码是否正确,如果正确就发放Token,如果失败,验证失败,别一个成功登后的无权限导航action。
下面定义一个控制台(.NetFramewrok)程序,用RestSharp来访问我们定义的web api,其中1为admin角色登录,2为system角色登录,3为错误用户密码登录,4是一个查询功能,在startup.cs中,admin角色是具有查询/api/values的权限的,所以用admin登录是能正常访问的,用system登录,能成功登录,但没有权限访问/api/values,用户名密码错误,访问/aip/values,直接是没有授权的
运行结果:
源码:https://github.com/axzxs2001/AuthorizePolicy.JWT
原文地址:http://www.cnblogs.com/axzxs2001/p/7530929.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
相关文章推荐
- asp.net core 2.0 web api基于JWT自定义策略授权
- asp.net core 2.0 web api基于JWT自定义策略授权
- 基于JWT(Json Web Token)的ASP.NET Web API授权方式
- [.NET 基于角色安全性验证] 之四:ASP.NET 2.0 成员资格和角色管理授权
- ASP.NET Core 2.0 自定义 _ViewStart 和 _ViewImports 的目录位置
- ASP.NET CORE系列【四】基于Claim登录授权
- Asp.Net Core2.0 基于QuartzNet任务管理系统
- ASP.NET Core 2.1中基于角色的授权
- Scott Mitchell 的ASP.NET 2.0数据教程之十一: 基于数据的自定义格式化
- Scott Mitchell 的ASP.NET 2.0数据教程之十一: 基于数据的自定义格式化
- asp.net基于JWT的web api身份验证及跨域调用实践
- [dotnetCore2.0]学习笔记之二: ASP.NET Core中,如何灵活使用静态文件和加载自定义配置
- ASP.NET Core 认证与授权[6]:授权策略是怎么执行的?
- asp.net core 2.0中如何自定义 actionfilter
- 译]Scott Mitchell 的ASP.NET 2.0数据教程之十一: 基于数据的自定义格式化
- asp.net 2.0 自定义 基于 Table 的 Profile Provide
- asp.net core 2.0的认证和授权
- Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录
- asp.net 2.0 自定义 基于 Table 的 Profile Provide
- Asp.Net Core 2.0 项目实战(9) 日志记录,基于Nlog或Microsoft.Extensions.Logging的实现及调用实例