架构图
功能介绍
更新内容
特性/增强
- 支持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」 值即可,例子如下:
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
用于同时兼容多种加密方式的密码数据同时存在时的密码校验。
修改旧的密码数据的值,添加前缀标识,支持以下三种格式:
- 无前缀
//只支持使用bcrypt方式加密的密码
格式:密码
例如:$2a$10$EgTOU7PMe.3jaMwFsumdweJcnY3TsTqyuJEdSaSKxdgwYchAwUJ1C
- 无盐值
格式:{encodingId}密码
例如:{bcrypt}$2a$10$EgTOU7PMe.3jaMwFsumdweJcnY3TsTqyuJEdSaSKxdgwYchAwUJ1C
- 有盐值
格式:{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