本插件用于禅道支持基于OpenID Connect的SSO登录。
在禅道开源版18.8、21.4、21.7.8及Keycloak 23.0.7上验证通过。
使用方法(以Keycloak为例):
- 在Keycloak的Clients页面中添加新的OpenID Connect类型的client。例如:

- 在新创建的client中拿到secret:

- 在Keycloak的Realm roles页面添加新的角色:
zentao_admin。并将希望登录禅道后自动赋予管理员角色的用户关联到该角色上,注:只有在禅道中新创建用户时才会自动赋予管理员角色。 - 在本项目的release页面下载最新插件安装包。
- 使用本地管理员登录禅道,并使用禅道的插件本地安装功能安装本插件。
- 编辑文件
extension/pkg/oidc/config/ext/oidc.php:

- 缺省情况下,禅道是使用传统的GET请求方式,这种方式不允许URL参数中包含字符
:,和OpenID Connect Authentication Response中的iss参数冲突。有两种解决方案: - 重启禅道后,点击
单点登录按钮,在Keycloak中输入账号登录。
adminRoleName 用于配置可获得禅道管理员身份的授权标识列表。插件按以下顺序读取授权标识,并将其合并到统一的 authorities 集合:
- Keycloak 的
realm_access.roles; - Casdoor 的
groups; - Casdoor 的
roles,角色对象使用其name字段。
只要 authorities 集合中的任一元素也在 adminRoleName 授权标识列表中存在,即视为拥有管理员身份。例如:
$config->oidc->adminRoleName = array(
"zentao_admin",
"owner/zentao-admin",
"role_zentao-admin"
);