四、JWT详解(core 2.2版)






思维导图的地址








Claim



创建一个简单的令牌

声明数组



调试程序技巧

当代码进行修改后,自动退出 监控文件被修改,然后启动。

post测试,生成的token


加密算法没有

还是提示 这是一个无效的签名

虽然生成了token,但是没有数字签名和加密算法。

通过查看源代码 看到 有5个重写的方法



这样我们的第三部 ,数字签名部分 就生成了。



为什么签名还是无效的呢?

还需要配置密钥。


复制我们的密钥过来。

密钥设置为123






参数的名字,key的大小

密钥至少是16位的


只复制第二部分的字符串 放在chrpme的 console里面来解析



获取jwt中的属性值


第一种方法需要自己生成一个类去接收

第二种是通过user对象去获取。

httpcontext上下文中去获取

我们的start只是注入了HttpContext。也没有使用其他的中间件。

发送请求,获取的值都是空的。只有第一种方法获取到了。23这两种方法获取到的是null

鉴权



必须在服务里注册一个持票人。





blogCore项目里面  ,都是配置在配置文件内的

开启中间件

如果没有开启呢?

那就获取不到jwt的值


开启后

传递的是token


这里的 作用是把一个字符串转反序列化成一个jwt的对象




一定要勾选


加断点测试

在上面输入ToList()

解除.net core对jwt的映射匹配。

这样我们再去获取,就获取到了email的内容

测试下 api是否被保护了

给action加授权。

不传token访问。返回了401

带上令牌访问

如何使用JWT

无状态的授权,直接用[Autoirize]它不用管你是什么角色和策略。


例如只有admin这个角色才可以使用


开启认证。第一步是开启认证AddAuthentication
第二步是注册AddJwtBearer服务,

核心就是验证参数的配置

最后一步,开启中间件

自己写中间件的方式去认证



首先是开启自定义中间件的认证。





 

结束

原文地址:https://www.cnblogs.com/wangjunwei/p/12593306.html