当前位置: 首页 > Web前端 > HTML5

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

时间:2023-04-05 18:48:59 HTML5

.NETCoreWebAPI集成JWT实现鉴权如何保护我的接口的问题,如果没有鉴权,不是接口完全暴露在外面,人家可以任意调用,显然不是这个结果我们想要。当然,身份验证的方式有很多种。今天给大家讲一个比较流行的。标准身份验证JWT什么是JWT?随着技术的发展和分布式web应用的普及,通过session管理用户登录状态的成本越来越高。所以逐渐发展成token的方式来进行登录身份验证,然后使用token来获取redis中缓存的用户。资料,随着后来jwt的出现,验证方式更加简单方便。不需要经过redis缓存,直接根据token获取保存的用户信息,检查token是否可用。单点登录更简单。JWT的结构是怎样的?JWT由三部分组成,分别是headerinformation、payload、signature,中间用(.)隔开(1)header(headerinformation)由两部分组成,tokentype(即:JWT)、hash算法(HMAC、RSASSA,RSASSA-PSS等)(2)Payload(有效载荷)JWT的第二部分是payload,包含claims。声明是关于实体(通常是用户信息)和其他数据的声明。索赔分为三种类型:注册索赔、公共索赔和私人索赔。Registeredclaims:这些是一组预定义的claims,非强制性,但推荐,iss(发行者),exp(过期时间),sub(主题),aud(受众)等;publicclaims:自定义Claims,注意不要和JWT注册表中的属性冲突。私有声明:这些是自定义声明,用于在同意使用这些声明的各方之间共享信息。它们既不是注册声明也不是公共声明。(3)Signature要创建签名部分,必须使用编码后的Header、编码后的Payload、密钥和Header中指定的算法,并进行签名。JWT使用流程:JWT在.NETCore项目中的具体用法:(1)在ConfigureServices方法中添加JWT相关代码:(2)在Configure方法中添加JWT代码:(3)创建JWT服务类:(4)标记接口类或方法上的认证:至此JWT的基本使用就结束了,非常简单方便。接下来我们使用postman测试JWT是否有效:(1)当我们没有登录的时候,访问查看界面,看看是什么现象:我们发现界面返回提示:401Unauthorized(2)我们调用先登录界面,先计算token,再请求试一试:登录成功后,界面返回token值(3)复制token粘贴在下面,请求业务界面,调用成功: