SpringBootSecurity学习(21)前后端分离版之OAuth2.0⾮对称
加密
JWT转换器
前⾯的例⼦中,都是在授权服务配置类中配置了⼀个很简单的jwt转换器,如下:
可以看到我们只⽤setSigningKey⽅法配置了⼀个秘钥,这⾥使⽤的是简单的对称加密的⽅式来加密jwt内容,同时资源服务器中使⽤的也是同样的秘钥配置jwt转换器:
除了对称加密的⽅式,⽣产环境使⽤⾮常多的是更加安全的⾮对称加密的⽅式来加密jwt。
⽣成公私钥
公私钥对可以使⽤jdk的命令 keytool 来⽣成,⾸先来看⼀下这个命令下有哪些参数:
中⽂的参数说明很清晰,我们需要使⽤ -genkeypair 参数⽣成秘钥对。再来看⼀下 keytool -genkeypair 之下还有哪些参数:
这些都是设置密钥对的属性参数。下⾯我们来使⽤keytool命令⽣成JKS(Java KeyStore)⽂件,命令如下:
springboot推荐算法keytool -genkeypair -alias oauth2 -keyalg RSA -keypass oauth2 -keystore oauth2.jks -storepass oauth2
从参数说明可以看出,别名为 oauth2,秘钥算法为 RSA,秘钥⼝令为 oauth2,秘钥库(⽂件)名称为 oauth2.jks,秘钥库⼝令为oauth2。输⼊命令回车后,后⾯还有七个问题需要回答,分别是(问题后⾯括号内的内容是我的回答):
您的名字与姓⽒是什么?(oauth2)
您的组织单位名称是什么?(oauth2)
您的组织名称是什么?(oauth2)
您所在的城市或区域名称是什么?(bj)
您所在的省/市/⾃治区名称是什么?(bj)
该单位的双字母国家/地区代码是什么?(cn)
CN=oauth2, OU=oauth2, O=oauth2, L=bj, ST=bj, C=cn是否正确?(是)
最后⼀个回答是输⼊完回车后,jks⽂件就⽣成了,具体过程如下:
⽣成的秘钥库⽂件如下:
⽣成完成后,将jks⽂件拷贝到resources⽂件夹下即可。
修改授权服务配置类
这⾥只需要修改jwt转换器即可:
其中,"oauth2".toCharArray() 这⾥配置的是⼝令,getKeyPair("oauth2") 这⾥配置的是别名。
根据jks⽂件获取公钥
输⼊命令:
keytool -list -rfc -keystore oauth2.jks -storepass oauth2
会打印出公钥:
在资源服务的resources⽂件夹下⾯,新建⼀个⽂件,将公钥复制进去:
这⾥复制的内容就是两⾏等号之间的内容。
修改资源服务配置类
资源服务配置类也只需要修改jwt转换器配置:
setSigningKey⽅法⽀持对称和⾮对称加密,它会对秘钥进⾏判断,来看⼀下源码:
测试
jwt转换器加密⽅式修改完成了,测试流程按照以前的⽅式获取令牌,访问受保护资源即可:
访问接⼝:
本⽂由博客⼀⽂多发平台发布!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。