ZLT-MP v4.5.0 发布

2021-06-29 14:54:34 浏览数 (1)

架构图

功能介绍

更新内容

特性/增强

  • 支持OIDC协议授权
  • 应用管理界面增加ID令牌相关的配置
  • 增加oidc协议单点登录样例工程oidc-sso
  • 增加zookeeper工具类zookeeperTemplate
  • 替换默认PasswordEncoder实现类为DelegatingPasswordEncoder
  • 修改文件中心默认依赖为s3
  • 升级spring-boot到2.3.11.RELEASE

问题修复

  • 修复token过期时访问网关返回500状态码

变更语句

代码语言:javascript复制
Use `oauth-center`;
alter table oauth_client_details add support_id_token tinyint(1) DEFAULT 1 COMMENT '是否支持id_token';
alter table oauth_client_details add id_token_validity int(11) DEFAULT 60 COMMENT 'id_token有效期';

内容说明

一、支持OIDC协议授权

OIDC是 OpenID Connect 的简称,它在OAuth2上构建了一个身份层,是一个基于OAuth2协议的身份认证标准协议。

在使用 授权码模式 或者 简化模式 时,通过在参数 response_type 中增加 「id_token」 值即可,例子如下:

代码语言:javascript复制
http://localhost:9900/api-uaa/oauth/authorize?client_id=zlt&redirect_uri=http://127.0.0.1&response_type=code id_token

「OIDC协议返回示例」

代码语言:javascript复制
{
    "resp_code": 200,
    "resp_msg": "ok",
    "datas": {
        "access_token": "d1186597-aeb4-4214-b176-08ec09b1f1ed",
        "token_type": "bearer",
        "refresh_token": "37fd65d8-f017-4b5a-9975-22b3067fb30b",
        "expires_in": 3599,
        "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwOi8vemx0MjAwMC5jbiIsImlhdCI6MTYyMTY5NjU4MjYxNSwiZXhwIjoxNjIxNjk2NjQyNjE1LCJzdWIiOiIxIiwibmFtZSI6IueuoeeQhuWRmCIsImxvZ2luX25hbWUiOiJhZG1pbiIsInBpY3R1cmUiOiJodHRwOi8vcGtxdG1uMHAxLmJrdC5jbG91ZGRuLmNvbS_lpLTlg48ucG5nIiwiYXVkIjoiYXBwIiwibm9uY2UiOiJ0NDlicGcifQ.UhsJpHYMWRmny45K0CygXeaASFawqtP2-zgWPDnn0XiBJ6yeiNo5QAwerjf9NFP1YBxuobRUzzhkzRikWGwzramNG9na0NPi4yUQjPNZitX1JzlIA8XSq4LNsuPKO7hS1ALqqiAEHS3oUqKAsjuE-ygt0fN9iVj2LyL3-GFpql0UAFIHhew_J7yIpR14snSh3iLVTmSWNknGu2boDvyO5LWonnUjkNB3XSGD0ukI3UEEFXBJWyOD9rPqfTDOy0sTG_-9wjDEV0WbtJf4FyfO3hPu--bwtM_U0kxRbfLnOujFXyVUStiCKG45wg7iI4Du2lamPJoJCplwjHKWdPc6Zw"
    }
}

「id_token包含以下内容」

代码语言:javascript复制
{
  "iss": "http://zlt2000.cn",
  "iat": 1621696582615,
  "exp": 1621696642615,
  "sub": "1",
  "name": "管理员",
  "login_name": "admin",
  "picture": "http://xxx/头像.png",
  "aud": "app",
  "nonce": "t49bpg"
}

二、应用管理界面增加ID令牌相关的配置

  • 「支持ID令牌」:为是则支持返回id_token
  • 「ID时效」:为配置id_token的有效时间

三、增加zookeeper工具类zookeeperTemplate

依赖:

代码语言:javascript复制
<dependency>
    <groupId>com.zlt</groupId>
    <artifactId>zlt-zookeeper-spring-boot-starter</artifactId>
</dependency>

使用:

代码语言:javascript复制
@Resource
private ZookeeperTemplate zkTemplate;

zkTemplate.createNode("/", "test");

四、替换默认PasswordEncoder实现类为DelegatingPasswordEncoder

用于同时兼容多种加密方式的密码数据同时存在时的密码校验。

修改旧的密码数据的值,添加前缀标识,支持以下三种格式:

  • 无前缀
代码语言:javascript复制
//只支持使用bcrypt方式加密的密码
格式:密码

例如:$2a$10$EgTOU7PMe.3jaMwFsumdweJcnY3TsTqyuJEdSaSKxdgwYchAwUJ1C
  • 无盐值
代码语言:javascript复制
格式:{encodingId}密码

例如:{bcrypt}$2a$10$EgTOU7PMe.3jaMwFsumdweJcnY3TsTqyuJEdSaSKxdgwYchAwUJ1C
  • 有盐值
代码语言:javascript复制
格式:{encodingId}{salt}密码

例如:{MD5}{5Hstj}0758f7131c6c95c8e3df05e1ac50214c

五、升级zlt-register到2.0.1

zlt-register/nacos 替换为官方最新的 2.0.1 版本

内容与官网一致,只是方便大家直接使用

项目地址

Gitee地址:https://gitee.com/zlt2000/microservices-platform

Github地址:https://github.com/zlt2000/microservices-platform

项目文档

https://www.kancloud.cn/zlt2000/microservices-platform/919417

项目更新日志

https://www.kancloud.cn/zlt2000/microservices-platform/936235

0 人点赞