net核心WebAPI集成JWT,实现身份验证

  

前两篇文章给大家介绍了在。网络核心中如何使用大摇大摆的文章,那今天给大家分享一下JWT

  

在做接口开发的同学可能都有感受,我的接口如何保护的问题,如果没有身份验证,那不是接口完全暴露在外面,任意使人调用,这显然不是我们想要的一种结果。当然做身份验证的方式有多种,今天给大家讲一种比较流行了,标准的身份验证JWT

  

什么是JWT ?
。网络核心WebAPI集成JWT,实现身份验证

  

随着技术的发展,分布式网络应用的普及,通过会话管理用户登录状态成本越来越高,因此慢慢发展成为令牌的方式做登录身份校验,然后通过令牌去取复述中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过复述,缓存,而是直接根据令牌取出保存的用户信息,以及对令牌可用性校验,单点登录更为简单。

  

JWT的结构体是什么样的?

  

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

  

(1)头(头信息)

  

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

  

(2)有效载荷(有效载荷)

  

JWT的第二部分是有效载荷,其中包含claims.claims是关于实体(常用的是用户信息)和其他数据的声明,声称有三种类型:注册,公共,私人索赔。

  

注册声明:这些是一组预定义的说法,非强制性的,但是推荐使用,iss(发行人),exp(到期时间),子(主题),澳大利亚(观众)等;

  

公共声明:自定义,注意不要和智威汤逊注册表中属性冲突

  

私人声称:这些是自定义的说法,用于在同意使用这些声称的各方之间共享信息,它们既不注册是索赔,也不是公众要求。

  

(3)签名   

要创建签名部分,必须采用编码的头,编码的有效负载,秘钥,标题中指定的算法,并对其进行签名。

  

JWT使用流程:
。网络核心WebAPI集成JWT,实现身份验证

  

JWT在。网络核心项目中的具体用法:

  

(1)在ConfigureServices方法中添加JWT相关代码:
。网络核心WebAPI集成JWT,实现身份验证

  

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

  

。网络核心WebAPI集成JWT,实现身份验证

  

(3)创建一个JWT服务类:
。网络核心WebAPI集成JWT,实现身份验证

  

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

  

。网络核心WebAPI集成JWT,实现身份验证

  

到此为止,JWT的基本用法就结束,非常简单和方便,接下来我们用邮差测试一下JWT是否生效:

  

(1)当我们在不登录的情况下,访问接口看看是什么现象:

  

。网络核心WebAPI集成JWT,实现身份验证

  

我们发现接口返回提示:401年未经授权

  

(2)我们先调用登录接口,先计算得到令牌,然后再来请求试试:
。网络核心WebAPI集成JWT,实现身份验证

  

登录成功后,接口返回了令牌值
。网络核心WebAPI集成JWT,实现身份验证

  

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

  

。网络核心WebAPI集成JWT,实现身份验证

net核心WebAPI集成JWT,实现身份验证