.NET Core WebAPI集成JWT,实现身份验证
2021-05-17 05:29
标签:swa authorize agg 如何使用 session管理 保存 用法 其他 生效 在做接口开发的同学可能都有感受,我的接口如何保护的问题,如果没有身份验证,那不是接口完全暴露在外面,任意使人调用,这显然不是我们想要的一种结果。当然做身份验证的方式有多种,今天给大家讲一种比较流行了,标准的身份验证JWT 什么是JWT? 随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录更为简单。 JWT的结构体是什么样的? JWT由三部分组成,分别是头信息、有效载荷、签名,中间以(.)分隔 (1)header(头信息) 由两部分组成,令牌类型(即:JWT)、散列算法(HMAC、RSASSA、RSASSA-PSS等) (2)Payload(有效载荷) JWT的第二部分是payload,其中包含claims。claims是关于实体(常用的是用户信息)和其他数据的声明,claims有三种类型: registered, public, and private claims。 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复制粘贴到下方,请求业务接口,成功调用: .NET Core WebAPI集成JWT,实现身份验证 标签:swa authorize agg 如何使用 session管理 保存 用法 其他 生效 原文地址:https://blog.51cto.com/14465598/2447149
下一篇:C#可选实参和命名实参
文章标题:.NET Core WebAPI集成JWT,实现身份验证
文章链接:http://soscw.com/index.php/essay/86581.html