文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

聊聊NET之JWT理解

2024-12-03 01:55

关注

介绍

jwt是一个基于json的、用于在网络上声明某种主张的令牌,jwt通常是用三部分组成:头信息,消息体,签名。他是一种双方之间传递安全信息的表述性声明规范。主要用于集群分布式中。

作用:可以做权限验证的使用,是一种标准化的数据传输规范,但是目的不是为了数据加密和保护。

使用场景

对比token+redis

JWT就是Json Web Token,就是Token的典型方式。JWT和Token+Redis的区别,其实都是Token,只是JWT的可靠性保障是来源于加密算法(对称加密和非对称两种),而Token+Redis的方案是依靠的后台数据存储。这两个本质也就带来了使用上的区别:

1 JWT是去中心化的,不需要任何后台数据的共享,第三方认证、跨数据中心认证、微服务等,都适合采用JWT的方式,当然,因为是去中心化的,不是实时验证,所以本质上来说token的主动过期是做不到的(要做到就会违背初衷)

2 Token+Redis是中心化的,要能识别token必须能访问该Redis,除非是有特别需求,要求每次token都实时检测,否则的话还是选择JWT,毕竟是成熟通用的技术,沟通维护成本也低,对开发者也友好一些。

这点我忘记是摘录哪个大佬的文章了,所以没有给出引用地址很抱歉。

流程

用户通过登录去向服务系统发起请求,然后生成带一定用户信息的数据作为令牌(jwt)返回给用户,用户拿到返回过来的信息在请求接口的时候放入头部,服务系统会从头部获取到令牌后验证签名的有效性,对客户端做出相应的响应。

 

  1. Authorization: Bearer  

如果想在接口中获取jwt令牌,可以使用

  1. var tokenHeader = HttpContext.Request.Headers["Authorization"].ToString().Replace("Bearer """); 

现在感觉作用就是可以通过jwt实现权限,在系统中定义好有哪些权限,然后在方法头部去设置哪些角色可以去访问这个东西。如果存放token,我的想法是把用户的信息放到jwt内部,然后前端通过登录去获取这东西,然后我返回这个东西到前台,每次调用接口时候把这个东西传出过来,然后我通过将这个解密获取到我登录时候存进去的信息。然后进行我自己的操作。

注意:

生成jwt时候的key必须在16位以上,否则会因为长度不够抛出异常

jwt本身是不加密的,里面包含的信息任何人都可以读取到。

jwt的签名部分是对前两部分的签名,防止数据被篡改,

Bearer认证

Bearer认证(也叫做令牌认证)是一种HTTP认证方案,其中包含的安全令牌的叫做Bearer Token。因此Bearer认证的核心是Token。那如何确保Token的安全是重中之重。一种方式是使用Https,另一种方式就是对Token进行加密签名。而JWT就是一种比较流行的Token编码方式。

验证

  1. //全局增加配置 
  2. services.AddControllers((options) => 
  3.     options.Filters.Add(new AuthorizeFilter());//添加全局的Authorize 
  4. }); 
  5.  
  6.  
  7. //控制器或者方法增加配置 
  8. [Authorize] 

原理

参考文档

晓晨:https://www.cnblogs.com/stulzq/p/7417548.html

 

老张的哲学:https://www.cnblogs.com/laozhang-is-phi/category/1413402.html

 

来源:鹏祥内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯