JWT身份验证原理简单讲解与nodejs简单实现

编程入门 行业动态 更新时间:2024-10-13 08:19:37

JWT身份验证原理<a href=https://www.elefans.com/category/jswz/34/1770983.html style=简单讲解与nodejs简单实现"/>

JWT身份验证原理简单讲解与nodejs简单实现

目录

  • 前言
  • JWT简单介绍
  • node中使用JWT
    • 安装jsonwebtoken包
    • 签发token
    • 验证token

前言

上一篇【基于token的持久化登录讲解及其实现】讲到token的机制,以及token的2大特性,即:只有服务器能够签发token,服务器可以验证token是否由自己签发。

可是上一篇博客编写的时候,对token的理解还不够深入,上一篇博客的token是最最最基本的token验证,而现在互联网应用的登录验证普遍使用JWT,即 JSON WEB TOKEN 的规范化验证,所以今天来学习一蛤,并且学习如何在node上编写token的签发与验证程序。

JWT简单介绍

JWT,即 JSON WEB TOKEN ,是一种规范化的无状态登录验证方式。因为以JSON的形式表示,所以JWT天然的不受编程语言的限制。

jwt中,token是一串字符串,由.号分割为三个部分,下面给出一条完整的token

完整:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoid29ybGRIZWxsbyIsImlkIjoxMTQ1MTQsImlhdCI6MTU5NzM5Nzk0MSwiZXhwIjoxNTk3NjU3MTQxfQ.otN7LikyB1mmknnBXL0mVrdOSFmID-dCORD5x4R3voM第一部分:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9第二部分
eyJuYW1lIjoid29ybGRIZWxsbyIsImlkIjoxMTQ1MTQsImlhdCI6MTU5NzM5Nzk0MSwiZXhwIjoxNTk3NjU3MTQxfQ第三部分
otN7LikyB1mmknnBXL0mVrdOSFmID-dCORD5x4R3voM

token的第一和第二部分,都是base64编码的,这意味着他们是明文的,可以被解码的,下面给出各个部分的解码结果

第一部分:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
解码结果:
{"alg":"HS256","typ":"JWT"}第二部分:
eyJuYW1lIjoid29ybGRIZWxsbyIsImlkIjoxMTQ1MTQsImlhdCI6MTU5NzM5Nzk0MSwiZXhwIjoxNTk3NjU3MTQxfQ
解码结果:
{"name":"worldHello","id":114514,"iat":1597397941,"exp":1597657141}

看到json格式的数据,想必都懂了,为啥叫json web token。

其中,第一部分声明了使用的算法,和token的类型,即为SHA256加密算法的JWT。

第二部分则是一些服务要用到的用户信息,这部分是服务器自定义添加的,比如用户登录的用户名和昵称,用户的余额等。在上诉例子中,我们添加nameid字段。值得注意的时,iat和exp字段表示签发时间和过期时间,token验证用。

第三部分是前两部分base64编码串,加上一个密钥,使用SHA256算法加密的结果(使用的算法在第一部分声明,即HS256)。值得注意的是,这个密钥只有服务器有,所以保证token都是服务器签发的。

具体的加密方式如下:

  1. 获取前两部分的base64加密字符串 s,即:(注意.号分割)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoid29ybGRIZWxsbyIsImlkIjoxMTQ1MTQsImlhdCI6MTU5NzM5Nzk0MSwiZXhwIjoxNTk3NjU3MTQxfQ
  1. 将 s 串和一个密钥一起,利用HS256算法加密,形成第三部分。

因为整合了前两部分信息,服务器验证token时,利用前两部分+密钥,再次产生第三部分,然后和用户提交的第三部分比对,从而验证。

node中使用JWT

在node.js中使用JWT,我们直接用别人造好的轮子就好了,不必自己重复造轮子了。。

安装jsonwebtoken包

使用node的包管理工具npm可以快速安装

npm install jsonw

更多推荐

JWT身份验证原理简单讲解与nodejs简单实现

本文发布于:2024-03-05 20:17:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1713295.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:简单   身份验证   原理   JWT   nodejs

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!