.NET Core WebAPI集成JWT,实现身份验证

前两篇文章给你们介绍了在.NET Core中如何使用Swagger的文章,那今天给你们分享一下JWTweb

在作接口开发的同窗可能都有感觉,个人接口如何保护的问题,若是没有身份验证,那不是接口彻底暴露在外面,任意令人调用,这显然不是咱们想要的一种结果。固然作身份验证的方式有多种,今天给你们讲一种比较流行了,标准的身份验证JWTredis

什么是JWT?算法

随着技术的发展,分布式web应用的普及,经过session管理用户登陆状态成本愈来愈高,所以慢慢发展成为token的方式作登陆身份校验,而后经过token去取redis中的缓存的用户信息,随着以后jwt的出现,校验方式更加简单便捷化,无需经过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登陆更为简单。缓存

JWT的结构体是什么样的?session

JWT由三部分组成,分别是头信息、有效载荷、签名,中间以(.)分隔分布式

(1)header(头信息)post

由两部分组成,令牌类型(即:JWT)、散列算法(HMAC、RSASSA、RSASSA-PSS等)测试

(2)Payload(有效载荷)编码

JWT的第二部分是payload,其中包含claims。claims是关于实体(经常使用的是用户信息)和其余数据的声明,claims有三种类型: registered, public, and private claims。spa

Registered claims: 这些是一组预约义的claims,非强制性的,可是推荐使用, iss(发行人), exp(到期时间), sub(主题), aud(观众)等;

Public claims: 自定义claims,注意不要和JWT注册表中属性冲突

Private claims: 这些是自定义的claims,用于在赞成使用这些claims的各方之间共享信息,它们既不是Registered claims,也不是Public claims。

(3)Signature

要建立签名部分,必须采用编码的Header,编码的Payload,秘钥,Header中指定的算法,并对其进行签名。

JWT使用流程:

JWT在.NET Core项目中的具体用法:

(1)在ConfigureServices方法中添加JWT相关代码:

(2)在Configure方法中添加JWT代码:

(3)建立一个JWT服务类:

(4)在接口类或方法上标记身份验证:

到此为止,JWT的基本用法就结束,很是简单和方便,接下来咱们用postman测试一下JWT是否生效:

(1)当咱们在不登陆的状况下,访问接口看看是什么现象:

咱们发现接口返回提示:401 Unauthorized

(2)咱们先调用登陆接口,先计算获得token,而后再来请求试试:

登陆成功后,接口返回了token值

(3)将token复制粘贴到下方,请求业务接口,成功调用:

相关文章
相关标签/搜索