oauth2-shiro 2.0.0版本发布,安全大升级

oauth2-shiro v2.0.0版本正式发布,在距上一次发布7年后,更新了大版本,对安全漏洞等问题进行大升级。

该版本主要更新内容:

  1. 升级使用springboot,调整工程结构,打包由war换成jar,使用thymeleaf替换servlet/jsp;spring大版本升级到5.3提升安全性。
  2. JDK由1.7升级到1.8,日志框架使用logback替换log4j(处理掉log4j安全漏洞)。
  3. 升级shiro版本到v1.11.0,解决相应的shiro版本漏洞。
  4. 密码存储算法由MD5替换为SHA-256,并支持盐(salt),让密码存储更安全可靠(通过配置参数authz.store.credentials.alg来控制与向下兼容)。
  5. OAuth token支持使用JWT格式(通过配置参数authz.token.generator.type来控制与向下兼容)。
  6. 对初始的账户密码与client secret使用更加安全的密码策略:包括大小写字母,数字与特殊符号,长度至少10位。

v2.0.0版本链接:https://gitee.com/mkk/oauth2-shiro/tree/2.0.0/

【推荐升级】

spring-oauth-server 2.1.0 发布,增加更多灵活场景

spring-oauth-server在快两年后的2022-05-01更新发布了2.1.0版本,spring-oauth-server是Spring与OAuth2整合示例,并扩展提供更多特性与场景。

此版本主要增加了JWT的支持,具体内容如下:

  1. 升级access_token, refresh_token支持JWT(Json Web Token), 提高性能
  2. 增加灵活性配置参数sos.reuse.refresh-token可实时延长token时效(类似session机制)
  3. 升级spring-security oauth2版本为2.3.8.RELEASE, 增加spring-security-jwt版本1.1.1.RELEASE
  4. 优化:文档目录结构调整,更直观简洁。

v2.1.0版本链接:https://gitee.com/shengzhao/spring-oauth-server/tree/2.1.0

MyOIDC v1.1.2 发布,基于OIDC协议的参考实现

MyOIDC  — 基于OIDC协议的参考实现,根据各类库提供实现参考 。正式版本v1.1.2发布,此版本主要是安全升级,更新内容:

1.为了处理CVE安全漏洞,对以下依赖库进行了升级:

  • spring-boot升级到v2.5.9;
  • spring-security-oauth2升级到v2.3.8.RELEASE
  • guava升级到v31.0-jre

2.增加了banner.txt,更新README.md让使用者更易上手

3.修复已知的各类bug

v1.1.2 tag:https://gitee.com/mkk/MyOIDC/tree/v1.1.2

spring-security-oauth2从v2.4.0.RELEASE开始不推荐使用并迁移

spring-oauth-server最新的版本中使用的spring-security-oauth2版本为v2.3.8.RELEASE;但之后的版本中将不再升级spring-security-oauth2的版本。

这是因为在spring-security-oauth2官方从v2.4.0.RELEASE版本开始将所有类标识为过期的(@Deprecated),并且说明了原因。

* @deprecated See the <a href=”https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide”>OAuth 2.0 Migration Guide</a> for Spring Security 5.

所有类在IDE中显示为不推荐使用。

在查看迁移的文章 https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide 中说明有具体原因。

为此,在spring-oauth-server的最新开发版本中(https://gitee.com/shengzhao/spring-oauth-server/tree/2.1.1/)也将去掉spring security oauth2依赖,改用新的Spring Security提供的 spring-security-authorization-server来替换。

尽请期待。

spring-oauth-server v2.1.0增加token存储的配置说明

spring-oauth-server的v2.1.0版本中增加了新的配置属性:

sos.token.store=jwt

该配置项有两个可选值:jwt或jdbc(默认)

jwt – 表示使用jwt作为token的数据格式,性能更高,推荐使用;配置实现详见 JWTTokenStoreConfiguration.java类;

jdbc – 表示使用数据库存储token的数据(包括refresh token),支持之前版本的实现,也是默认选项,对应的配置实现详见 JdbcTokenStoreConfiguration.java

https://gitee.com/shengzhao/spring-oauth-server

OAuth2中token升级使用JWT的实现参考

OAuth2中默认使用 Bearer Tokens (一般用UUID值)作为token的数据格式,但也支持升级使用JSON Web Token(JWT)来作为token的数据格式。

20200918101526

下面以 spring-oauth-server 升级使用JWT来说明

重点在于提供一个 JwtTokenStore的配置类,详细可参见 MyOIDC 工程中的配置:https://gitee.com/mkk/MyOIDC/blob/master/myoidc-server/src/main/java/myoidc/server/config/OAuth2ServerConfiguration.java

需要注意的是底层使用的算法,可以是RSA也可以对称加密的HMAC等,具体可查看 JwtAccessTokenConverter.java 类。

对应的工程中需要增加 spring-security-jwt 库的依赖(如果是Maven工程)。

 

spring-oauth-server 2.0.2 发布,扩展 OAuth2 Server

spring-oauth-server在2020-06-04更新发布了2.0.2版本,spring-oauth-server是Spring与Oauth2整合示例。

此版本更新内容如下:

1.Fix CVE-2019-3778, use spring-security-oauth 2.3.5.RELEASE

2.解决数据库多条 access_token问题,增加唯一约束

3.升级Spring-Boot版本为2.1.4.RELEASE

 

2.0.2版本release链接: https://gitee.com/shengzhao/spring-oauth-server/releases

 

MyOIDC v1.1.1 发布,基于 OIDC 协议的参考实现,根据各类库提供实现参考

MyOIDC  –基于OIDC协议的参考实现,根据各类库提供实现参考 。正式版本v1.1.1发布,主要更新内容:

  1. 修改启动方法为jar直接运行
  2. 更新How-To-Use.txt
  3. AccessToken使用时允许获取更详细用户信息
  4. 增加 JWKS test与使用说明示例
  5. jose4j升级使用0.7.1版本

openid

GitHub:   https://github.com/monkeyk/MyOIDC/tree/v1.1.1

Gitee:  https://gitee.com/mkk/MyOIDC/tree/v1.1.1