ASP.net Core 2.2中Jwt验证的使用方法及在微信小程序上应用

Jwt简单介绍

什么是Jwt

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

以上内容来自下面这位大佬的简书,强烈推荐各位小伙伴去拜读一下。

作者:Dearmadman

链接:https://www.jianshu.com/p/576dbf44b2ae
Jwt由3个信息段构成,分别是:头部(Header),载荷(Payload),签证信息(signature)。以上三个部分通过头部中声明的加密算法加密并以’.'连接就成了Jwt字符串。

头部保存的是声明信息,声明这是Jwt和声明加密算法。

载荷保存的是我们服务器给这个用户的信息,一般是分配一个Guid特定识别这个用户以及这个Token的有效期信息。

签证信息保存的是与加密算法相关的信息,在 ASP.Net Core中这些信息可以调用现成的方法直接生成。

Jwt安全吗

首先,从服务器的角度看,Jwt是服务器自己做出来的,用于特定识别某个用户的登录令牌,也就是说不管是谁,只要能截取到这个登录令牌就能伪造请求。

从客户端的角度来说,这个登录令牌只是一段字符串,在请求非公共接口时在Http请求的Header中带上就完事了,也不用去解析获取令牌里面的载荷信息。除非客户端也有Jwt中的签证信息,也能自己生成一个合法的令牌,不过在客户端中保存签证信息太危险了。

那么,我们能截取到这个登录令牌吗?如果是http请求的话,是能轻易抓取到的,但如果是https请求的话就不简单了,因为https的加密范围是包含请求的Header和Body,只要你不是通过url的形式传递令牌就能被加密到。所以Jwt还是应该配合https一起使用,不过这些都是防君子不防小人,任何东西在网络上传输都不能做到绝对安全。

在 ASP.NET Core中使用Jwt

授权和认证

在上代码之前,有一些概念必须要理解清楚。授权(Authorization)和认证(Authentication)的概念一定要明白。这两个东西都是Auth开头,tion结尾,不仔细看还真挺难区分。

首先,在访问非公开接口前先要经过认证,然后要验证授权。举个例子,认证就好比是登录游戏,但是在游戏里能不能使用VIP特权就要经过授权验证。认证(Authentication)只是说明你是合法用户,但不是每个用户都有权限执行这个操作,这就需要授权(Authorization)。

对于非公共接口,一定要有认证,但不一定要有授权(没有VIP的玩家总不能连刷图都不让吧?)。

三步走代码例子

在 ASP.Net Core 2.2中使用Jwt认证分三步走。
如果不需要自定义授权认证可以忽略第二步。

生成Jwt

首先,我们需要编辑一个登录接口,用户登录成功后就给他一个Jwt令牌,以后访问所有非公共接口都通过这个令牌识别该用户。令牌中包含一个Guid,登录成功后将该Guid和用户信息关联记录起来,后续操作根据Guid获取该用户信息。

[HttpPost("login")]
public IActionResult Login([FromBody]Client user)
{
    IActionResult ret = null;    // 用户登录验证
    if(CheckUser(user))
    {
        // 验证通过,生成唯一识别码放到Token的Payload(载荷)里面
        string guid
如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要追额外费用) 随着移动互联网技术的发展和用户需求的变化,【小程序名称】应运而生,以其轻量化、便捷化的设计理念为用户提供了一种全新的服务模式。作为一款无需下载安装即可使用应用,【小程序名称】依托于微信庞大的生态系统,让用户在微信内就能轻松实现各种功能操作。 【小程序名称】的核心功能主要集中在【具体服务领域】,例如在线购物、本地生活服务、教育学习或健康管理等。它简化了传统APP繁琐的注册登录流程,支持微信一键授权登录,极大地提升了用户体验。用户通过搜索或扫描二维码,瞬间即可开启使用,享受快速载、流畅运行的服务。 该小程序界面设计简洁明了,布局合理,易于上手。同时,其特色功能如实时更新的信息推送、个性化推荐以及社交分享功能,让用户能够及时获取所需信息,并方便地将优质内容分享至朋友圈或好友,实现信息的高效传播与互动。 【小程序名称】注重数据安全与隐私保护,严格遵守国家法律法规和微信平台的规定,确保用户数据的安全无虞。此外,其背后的开发团队持续迭代更新,根据用户反馈不断优化产品性能,提升服务质量,致力于打造一个贴近用户需求、充满活力的小程序生态。 总结来说,【小程序名称】凭借其小巧便携、快捷高效的特性,不仅节省了用户的手机存储空间,更为用户提供了无缝衔接的便利服务,是现代生活中不可或缺的一部分,真正实现了“触手可及”的智能生活新体验。只需轻点屏幕,无限精彩尽在掌握之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值