用 RS256 算法签发 JWT

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

默认 JWT 的签名算法用的是 HS256 .. 这种算法在签名还有验证的时候用的是同一个密码 .. 这种叫对称算法 .. 我们也可以用 RS256 这种算法 .. 它是一种非对称算法 ... 在签名的时候使用它要用到一个私钥 ... 就是一个 Private Key ... 在验证的时候需要用到公钥 ... 就是 Public Key ..

使用这种算法,你可以在一个单独的地方,用私钥签发 JWT ... 在其它的地方,可以使用公钥去验证我们签发的 JWT ... 也就是有私钥的地方才能签发 JWT .. 没有私钥,但是有公钥的地方只能去验证 jwt,不能签发 jwt ..

现在我们可以使用 openssl 去生成一个私钥,再根据这个私钥去生成一个公钥 ... 打开命令行工具 ... Windows 上可以使用 cmder ,你可以新建一个 cmd 类型的界面,或者 bash 类型的界面 ... mac 用户可以用系统自带的终端 ...

先去生成一个私钥 .. 进入到想要保存私钥文件的地方 ... 创建一个目录,名字是 config,再进入到 config 目录的下面 .. 然后执行一下 ..

ssh-keygen -t rsa -b 2048 -f private.key

再根据这个私钥生成一个公钥 ..

openssl rsa -in private.key -pubout -outform PEM -out public.key

查看一下 .. 这里这个 private.key.pub 文件没什么用,可以把它删除掉 ...

现在我们这里两个文件 ... private.key ,私钥,还有一个 public.key,公钥 .. 我们先根据这个私钥去签发一个 jwt ..

打开 index.js ... 先添加一段注释 ... 说明一下默认用的是 HS256 这种算法 ... 然后把签发还有验证 jwt 的代码注释掉 ..

再添加一段注释 ... 下面用一下 RS256 这种算法 ... 我们可以把私钥文件里的内容读取过来 ... 需要用到 Node.js 的 fs 模块 ... 先在文件的顶部导入这个模块 .. 名字是 fs ...

添加一个 privateKey ,表示私钥 ... 用一下 fs 的 readFileSync 方法,它是读取文件里内容的同步方法 .. 文件的位置是 ./config/private.key

再签发一个 token ... 用一下 jwt 的 sign 方法, token 的数据是 payload .. 这个签名算法要用一下 privateKey,就是之前我们生成的私钥文件里的内容 ..

然后是个对象 ... 里面添加一个 algorithm ... 用这个选项指定一下签名用的算法,默认它的值是 HS256 ,这里我们要设置成 RS256 ..

最后在控制台上输出签发的这个 token 里的内容 ...

回到命令行, 回到上一级目录 .. 执行一下 node index.js

... 会得到签发的这个 token ... 复制一下 ...

再打开 jwt 的调试工具 ... 把 token 内容先粘贴上去 .. 右边会显示解码之后的内容 ... 注意这个 token 的 header 里面,有个 alg ,它的值是 RS256,它表示的是这个 token 用的算法 ..

上面的算法选择 RS256 ... 然后再打开 public key ,就是公钥这个文件,复制一下里面的内容 ... 粘贴到调试工具里面 ..

这样就会提示 Signature Verified ,签名验证成功 ...

用 RS256 算法签发 JWT《 JWT:JSON Web Token 》

统计

13799
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点