Releases: ZeroOrInfinity/UMS
Releases · ZeroOrInfinity/UMS
2.2.8
Fixes and Improvements:
- 改进: 添加是否在启动时检查并自动创建 userConnectionTable 与 authTokenTable 控制开关属性.
- 改进: 解码 refresh Jwt 时添加黑名单校验.
- 优化: redis 操作.
- 文档: 添加流程图.
2.2.7
Fixes and Improvements:
- 修复: 删除 refreshToken 时, 获取 refreshToken 的 redis key 错误问题.
- 修复: jwt + session 模式缺少对 jwtString 进行解码时校验逻辑.
- 接口: 添加 JwtCacheTransformService 接口, 如需缓存自定义对象, 通过实现此接口即可.
- 添加: 自动 release 到 maven 中心库的插件.
- 改进: jwt 模式与 jwt + session 模式. 添加 ums.jwt.blacklist.tokenInfoPrefix 属性, 完善 jwt + session 模式.
- 改进: 添加 UmsBearerTokenResolver 忽略解析jwt 的 urls 字段 ignoreUrls 及相关处理. 添加 UmsBearerTokenResolver 的 ignoreUrls 的自动配置.
- 优化: JwtCacheTransformService 接口.
- 优化: getJwtByRequest() 方法; 重复校验 refreshTokenJwt 有效性. 以及其他一些优化.
2.2.6
Fixes and Improvements:
- 修复: 缓存验证码使用 redis 模式时, 二次校验获取不到缓存 code 的问题.
- 改进: 增加 getJwtClaimsSetBuilderWithAuthorities(..) 接口, 规范对 Authorities ClaimsSet 的生成.
2.2.5
Fixes and Improvements:
- 修复: 删除不必要的文件, 放在 git 忽略列表, 上传 maven 时自动打包了, 导致项目启动报错.
- 修复: 缓存验证码使用 redis 模式时, 获取不到 locationX 字段的问题.
- 改进: 添加 ums.codes.slider.redundancyValue 属性.校验 SliderCode#getLocationX() 时的允许的差异值: 默认: 3 PX.
2.2.4
Fixes and Improvements:
- 修复: setOldJwtToBlacklist(..) 比较新旧 JWT 的 userId 时, 获取 userId 不一致的问题.
- 修复: 拦截异常错乱的问题, 添加 JwtReAuthException 异常拦截.
- 添加: JwtReAuthException 与相关错误码枚举.
- 添加: ReAuthService 接口实现 UmsReAuthServiceImpl.
- 添加: 自定义的 REFRESH_TOKEN_JTI(rJti) ClaimsName
- 属性: 添加 ums.jwt.blacklist.reAuthPrefix 属性, 是否需要重新登录认证的 redis key 前缀.
- 接口: isRefresh(..) 接口添加 principalClaimName 参数.
- 接口: 添加 JWTClaimsSet toClaimsSet(UserDetails userDetails); 接口与实现.
- 接口: 添加 JWTClaimsSet generateClaimsSet(UserDetails, Jwt); 接口与实现.
- 接口: 添加接口参数 JWTClaimsSet generateClaimsSet(Authentication, Jwt).
- 接口: 添加 getTenantId(UserDetails) 与 getTenantId(Collection<? extends GrantedAuthority>) 默认接口.
- 改进: 优化 UmsNimbusJwtDecoder 实例化, 增加只针对 refreshToken 的 decode 方法, 以提高效率
- 改进: JwtContext 创建与刷新 Jwt 逻辑, 增加 ReAuthService 的相关方法, 其他的一些优化及一些问题的修复.
- 优化: JWT 自动续期策略时判断逻辑.
- 优化: 修改 getJwtGrantedAuthoritiesConverter() 为 getJwtAuthenticationConverter().
- 其他优化:
2.2.3
Fixes and Improvements:
- 修复: jwtTokenString 因没有去除 bearer 前缀而解析错误的问题.
- 修复: 通过 refreshToken 刷新 jwt 时, NPE 问题. 去除重复保存到 redis 的语句.
- 修复: jwt 异常被 FrameworkServlet 拦截的问题.
- 更新: JustAuth 依赖到 1.15.9 版本.
- 新增: 飞书, 喜马拉雅, 企业微信网页 第三方登录.
- 增加: 支付宝内置的代理自定义设置.
- 升级: facebook api 版本到 9.0.
- 修改: 原来的企业微信为 企业微信二维码登录.
- 修改: AuthToken 添加了 refreshTokenExpireIn 字段, 相应的修改数据库操作.
- 重命名: ums.repository.tableName 为 ums.repository.userConnectionTableName.
- 新增: auth_token 建表及查询表是否存在的 sql 语句属性(ums.repository.xxx).
- 新增: 查询数据库名称的 sql 语句属性(ums.repository.queryDatabaseNameSql), 方便根据不同数据库自定义查询语句.
- 新增: 添加 JwtIdService 接口
- 新增: 添加 ums.jwt.alwaysRefresh 属性, 控制通过 refreshToken 刷新 jwt 时, 是否总是返 newJwt.
- 添加: JwtIdService 接口, 便于自定义 jti 与 refreshToken,
- 添加: Jwt + session(缓存 redis) 与 jwt 两种模式, 有 ums.jwt.blacklist.enable 属性控制, enable = true 时为 jwt 模式, enable = false 时为 jwt + session 模式.
- 改进: refreshToken 生成格式: ums.jwt.blacklist.enable 属性, enable = true 时 refreshToken 生成 jwt, enable = false 时 refreshToken 生成 UUID.
- 添加: GenerateClaimsSetService 添加 getJwtGrantedAuthoritiesConverter 接口.
- 添加: JwtJackson2Module redis jackson2 序列化模块.
- 改进: 添加 SaveRefreshTokenException 异常.
- 优化: 增加 JwtIdServiceAutoConfiguration, 消除循环引用问题.
- 优化: redis 缓存序列化问题.
- 优化: 重命名 JwtCacheProperties 为 JwtBlacklistProperties, 添加是否支持 jwt 黑名单的开关属性 enable.
- 优化: 更新 generateClaimsSet() 逻辑, 由 CustomClaimSetService 的 claim 值覆盖 UmsGenerateClaimsSetServiceImpl.generateClaimsSet() 的 claim 的值.
- 优化: jwt-example.
2.2.2
Fixes and Improvements:
- 修复: 补全 AuthToken 与 UserConnection 建表语句, 与刷新 access Token 定时任务处理逻辑相匹配.
- 新增: ums-spring-boot-starter 模块替换 ums-core-spring-boot-starter 功能, ums-core-spring-boot-starter 模块只拥有用户码登录,手机登录,用户签到, jwt, mdc 功能.
- 改进: 添加 ums.jwt.exposeRefreshTokenUri 属性, 是否曝露通过 refreshToken 获取 JWT uri 的属性开关.
- 改进: 根据创建或解析 JWT 的不同场景生成 JwtDecoder.
- 改进: 添加 jti 黑名单校验, 有触发开关.
- 改进: 添加获取 JWT 存储 principal 的 claimName 的 getPrincipalClaimName() 接口, 优化一些接口的参数.
- 优化: 刷新与重置 jwt 的逻辑等.
- 日志: 优化返回前端的日志.
- 优化: 重命名 UserInfoJsonVo 为 AuthTokenVo, 优化 AuthenticationSuccessHandler.onAuthenticationSuccess(..) 方法逻辑.
- 示例: 优化 /me, 未登录时 NPE 问题.
- 优化: 删除 RepositoryProperties 无用的配置属性.
- 优化: 移动字段 auth2RedirectUrl 到 BaseAuthenticationSuccessHandler.
2.2.1
Fixes and Improvements:
- 重构: 从 ums-core 中分离出第三方授权登录功能作为单独的 ums-oauth 模块.
- 重构: 从 ums-core 模块分离验证码功能作为单独的 ums-vc 模块.
- 修复: 因未启用 JWT 功能而使 ClientAuthenticationSuccessHandler 发生 NPE 异常的 bug.
- 改进: ums-commons 模块添加 JobHandler.java 定时任务接口, 让修改验证码图片定时任务和第三方登录刷新 accessToken 定时任务继承此接口.
- 安全性: 在工具类/Context/Holder 的类上添加 final 字段并把无参构造方法设置为 private.
- 示例: 添加详细的控制台日志, 以便查看 JWT 流程.
- 示例: 修复因实现 UmsReAuthServiceImpl 一直返回 true 而导致的示例一直提示 JWT 失效的错误.
- 日志: 添加统一的异常日志.
- 日志: 规范面向用户的错误响应, 添加 MDC 链路追踪 ID, 方便定位问题.
2.2.0
Fixes and Improvements:
- 特性: 添加 Jwt 模块, JWT 创建(通过接口自定义 Claims, 通过配置设置算法等), 校验(通过接口自定义校验规则), 刷新(自动刷新, 直接拒绝, 通过 refreshToken 刷新), 刷新的 JWT
使旧 JWT 失效引发的并发访问问题及黑名单. - 修复: defaultSuccessUrl 设置失效的 bug. 感谢: 帅子男一号.
- 修复: 开启第三方授权登录时, 如果不配置某些属性会出现 NPE 问题.
- 增强: mdc 模块在全局异常返回时添加 MDC 链路追踪 ID, 优化: 异常处理器, 返回 json 数据中添加日志链路追踪 ID.
- 增强: 添加跨域属性(ums.client.cors.xxx)配置功能.
- 重构: 从 core 模块 分离出 ums-mdc 模块, ums-rbac 模块, 为拆分微服务做准备.
- 重构: 移动 MvcUtil 中 setRequestMappingUri(..) 与 registerController(..)方法到 ums-commons 模块的 reflectionUtil 中.
- 重构: 移动 MvcUtil 中 registerDelegateApplicationListener(..) 方法到 ums-commons 模块的 AppContextUtil 中.
- 重构: core 模块中 UmsUserDetailsService.java 与 UserDetailsRegisterService.java 到 ums-commons 模块.
- 重构: 移动 AuthenticationUtil 中 isAjaxOrJson(..) 与 responseWithJson(..) 方法到 ums-commons 模块的 JsonUtil 中.
- 重构: 为了重构 mdc 功能, 移动 MvcUtil 中 getUrlPathHelper() 方法到 ums-commons 模块的 UrlUtil 中.
- 重构: 移动 TenantContextHolder 等引用到 ums-commons 模块中.
- 重构: 移动 MvcUtil 中 setRequestMappingUri(..) 与 registerController(..)方法到 ums-commons 模块的 reflectionUtil 中.
- 添加: rbac 模块 PermissionAdviceHandler.
- 添加: Jwt 相关对象的 Jackson2 反序列化器, 优化已有的反序列化器.
- 改进: 添加 MdcUtil.getMdcTraceId() 方法.
- 改进: 授权异常被 ControllerAdvice 中的异常处理器拦截的问题, 添加 Controller 方法参数校验异常拦截.
- 改进: JustAuthProperties 中的 scopes 属性格式(providerId:scope), 使其可以针对不同的第三方服务商进行不同的自定义 scope 配置.
- 改进: 使自定义第三方授权登录可以自定义 providerId.
- 改进: 添加 alwaysUseDefaultTargetUrl 所需配置.
- 优化: 添加 ControllerAdvice 的 Order 注解, 并添加常量 Order 的常量, 方便调整 ControllerAdvice 的加载顺序.
- 优化: 获取 ContextPath 的方式及重复添加 ContextPath 的问题.
- 示例: 添加 JWT 示例.
- 示例: 添加跨域功能配置.
- 等其他改进与优化.
2.1.9
Fixes and Improvements:
- 特性: 增加多租户处理器接口 TenantContextHolder, 以及相应的配置文件与异常.
- 增强: 在用户密码登录入口/手机登录入口/第三方登录入口添加提取多租户 ID 的逻辑.
- 改进: Auth2LoginAuthenticationFilter 添加初始化 details 逻辑, 方便自定义初始化 details.
- 修复: 当不支持登录路由时, loginUrl 被设置成 logoutUrl 的 bug.
- 改进: 完善 RememberMe 配置, 使其支持自定义的 RememberMeServices.
- 示例: 添加多租户示例