SpringOauth2(一):JwtTokenStore使用HMACSHA512算法令牌、与jjwt令牌互相可识别

简介: 1、spring提供的JwtTokenStore的加密算法默认为HMACSHA256,为了更安全我们如何定制实现HMACSHA512算法?2、在网关鉴权使用的是io.jsonwebtoken.jjwt,使用JwtTokenStore生成的令牌如何与jjwt互通?

SpringOauth2(一):JwtTokenStore使用HMACSHA512算法令牌、与jjwt令牌互相可识别

在我们使用SpringOauth2过程中,一般情况下会使用JwtTokenStore来颁发及校验令牌字符串,相比较于JdbcTokenStore这种令牌存储形式来说性能要高很多。

  • 本文重点内容

1、spring提供的JwtTokenStore的加密算法默认为HMACSHA256,为了更安全我们如何定制实现HMACSHA512算法?

2、在网关鉴权使用的是io.jsonwebtoken.jjwt,使用JwtTokenStore生成的令牌如何与jjwt互通?

  • 我这里不具体介绍怎么使用SpringOauth2了,以下是本人多年经验封装的可用于实战的Spring+security+Oauth2授权/认证服务器的Starter,代码自取哦
    // 认证授权服务器
    https://gitee.com/yeeevip/yeee-memo/tree/master/memo-parent/memo-common/common-auth/common-platform-auth-server
    https://github.com/yeeevip/yeee-memo/tree/master/memo-parent/memo-common/common-auth/common-platform-auth-server
    // 认证授权客户端
    https://gitee.com/yeeevip/yeee-memo/tree/master/memo-parent/memo-common/common-auth/common-platform-auth-client
    https://github.com/yeeevip/yeee-memo/tree/master/memo-parent/memo-common/common-auth/common-platform-auth-client
    // 只需在项目pom中引入starter依赖配置文件加一下就可以直接用了,使用案例
    https://gitee.com/yeeevip/yeee-memo/tree/master/spring-cloud/auth-sso
    https://github.com/yeeevip/yeee-memo/tree/master/spring-cloud/auth-sso
    

1 JwtTokenStore使用HMACSHA512算法

看代码

@Configuration
public class JwtTokenStoreConfig {
   

    private final static String SIGN_ALGORITHM = "HMACSHA512";

    @Bean
    public AccessTokenConverter accessTokenConverter() {
   
        JwtAccessTokenConverter jwtAccessTokenConverter = new JwtAccessTokenConverter();
        //配置JWT使用的秘钥
        jwtAccessTokenConverter.setSigningKey(authProperties.getJwtSecret());
        // 重点!!!
        jwtAccessTokenConverter.setSigner(new MacSigner(SIGN_ALGORITHM
                , new SecretKeySpec(DatatypeConverter.parseBase64Binary(authProperties.getJwtSecret()), SIGN_ALGORITHM)));
        jwtAccessTokenConverter.setVerifier(new MacSigner(SIGN_ALGORITHM
                , new SecretKeySpec(DatatypeConverter.parseBase64Binary(authProperties.getJwtSecret()), SIGN_ALGORITHM)));
        ...
    }
}

常见问题

  • 1 提示 invalid_token - Cannot convert access token to JSON

这个问题大概意思是说无法识别颁发的token,检查有没有setVerifier,参考上面代码看有没有加.setVerifier(new MacSigner)

  • 完整代码
    https://gitee.com/yeeevip/yeee-memo/blob/master/memo-parent/memo-base/base-security-oauth2/src/main/java/vip/yeee/memo/base/websecurityoauth2/configure/JwtTokenStoreConfig.java
    https://github.com/yeeevip/yeee-memo/blob/master/memo-parent/memo-base/base-security-oauth2/src/main/java/vip/yeee/memo/base/websecurityoauth2/configure/JwtTokenStoreConfig.java
    

2 JwtTokenStore的令牌与jjwt互相识别

2.1 两者互相识别的前提肯定得保证双方加密算法一致,由于JwtTokenStore默认使用的是HMACSHA256,需要定制修改为jjwt默认的HMACSHA512算法,代码参考上面

2.2 研究jjwt源码发现加密密钥经过DatatypeConverter.parseBase64Binary这个方法的处理,所以JwtTokenStore的密钥同样需要这样处理,代码参考上面

目录
相关文章
|
11天前
|
算法
【MATLAB】语音信号识别与处理:滑动平均滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:滑动平均滤波算法去噪及谱相减算法呈现频谱
54 0
|
11天前
|
算法
【MATLAB】语音信号识别与处理:T1小波滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:T1小波滤波算法去噪及谱相减算法呈现频谱
46 0
|
11天前
|
算法
【MATLAB】语音信号识别与处理:SG滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:SG滤波算法去噪及谱相减算法呈现频谱
69 1
|
11天前
|
机器学习/深度学习 算法 TensorFlow
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
77 0
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
|
11天前
|
算法
【MATLAB】语音信号识别与处理:移动中位数滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:移动中位数滤波算法去噪及谱相减算法呈现频谱
29 2
|
11天前
|
算法
【MATLAB】语音信号识别与处理:卷积滑动平均滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:卷积滑动平均滤波算法去噪及谱相减算法呈现频谱
37 0
|
11天前
|
算法
【MATLAB】语音信号识别与处理:一维信号NLM非局部均值滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:一维信号NLM非局部均值滤波算法去噪及谱相减算法呈现频谱
49 1
|
11天前
|
算法
【MATLAB】语音信号识别与处理:高斯加权移动平均滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:高斯加权移动平均滤波算法去噪及谱相减算法呈现频谱
125 0
|
11天前
|
机器学习/深度学习 算法
应用规则学习算法识别有毒的蘑菇
应用规则学习算法识别有毒的蘑菇
|
11天前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的螺丝螺母识别算法matlab仿真
以下是内容的摘要: 该文介绍了使用YOLOv2深度学习模型进行螺丝螺母识别的算法,展示了在matlab2022a环境下运行的6张检测效果图。YOLOv2基于Darknet-19预训练网络,结合多任务损失函数和非极大值抑制技术,有效检测目标。为了适应任务,进行了数据集准备、模型微调、锚框选取等步骤。核心程序加载预训练模型,遍历图像并展示检测结果,通过调整阈值绘制检测框。