Keycloak 26 配置
-
新建/选择 Realm:进入目标 Realm(例如
my-realm)。 -
创建 Client:
- Client type:
OpenID Connect - Client ID:
demo-jenkins - 点击 Next,开启 Client authentication(即 Confidential 模式),保存。
- Client type:
-
设置重定向 URL:
- 在 Client 详情的 Settings 选项卡下配置:
- Valid redirect URIs:
http://<your-jenkins-ip-or-domain>:8080/securityRealm/finishLogin - Web origins:
http://<your-jenkins-ip-or-domain>:8080
- Valid redirect URIs:
- 在 Client 详情的 Settings 选项卡下配置:
-
获取 Client Secret:
- 切换到 Credentials 选项卡,复制 Client Secret。
-
添加 Groups Mapper(用于权限映射,可选,这里没用到,下面用的是User Client Role):
- 切换到 Client scopes -> 点击
demo-jenkins-dedicated-> Configure new mapper -> 选择 Group Membership。 - Name:
groups - Token Claim Name:
groups - 确保开启 Add to user info 和 Add to ID token。
- 切换到 Client scopes -> 点击

注意事项
- 组和权限控制:建议配合 Matrix Authorization Strategy Plugin 或 Role-based Authorization Strategy 插件,使用 Keycloak 返回的
groups或用户映射 Jenkins 角色。 - 安全回退:在配置保存前,务必保留一个打开的管理页面,或确保已配置救砖工具(如通过修改
config.xml中<useSecurity>true</useSecurity>禁用安全),避免配置失误导致锁死。 - 虚拟机建议先打快照
Jenkins 安装与切换插件
- 进入 Manage Jenkins -> Plugins -> Available plugins。
- 搜索并安装 Keycloak Authentication Plugin (
keycloak),安装后重启 Jenkins。 - 进入 Manage Jenkins -> Security。
- 在 Security Realm 处选择 Keycloak Authentication Plugin。
获取 Keycloak 的 JSON 配置文件
keycloak-plugin 不需要手动一项项填 Endpoint,直接导入 Keycloak 生成的适配器 JSON 即可:
-
登录 Keycloak 管理后台,进入 Realm
my-realm。 -
点击 Clients -> 选择
demo-jenkins客户端。 -
确保客户端配置:
- Client authentication:
ON(Confidential) - Valid redirect URIs: http://
:8080/securityRealm/finishLogin 或 http:// :8080/*
- Client authentication:
-
在右上角或 Action 菜单中找到 Download adapter config
-
Format / Option 选择 Keycloak OIDC JSON。
-
点击 Download 或直接复制显示的 JSON 文本。


jenkins页面不要退出,因为使用keycloak用户登陆会没权限
配置用户管理员权限

Keycloak 组同步到Jenkins
说明:默认使用keycloak 登陆到jenkins 会没有权限
这里以组名为 backend-dev 进行权限配置,在jenkins role-strategy 将 backend-dev 加入group,勾选了 全局read 权限,这样使用keycloak用户登陆,就有简单的dashboard权限,不会报Access Denied,user 没有全部/Read权限。
注:这里全局read只勾选全部, 任务的read 没勾选,所以看不到任务视图,任务视图及其他权限 由Item roles 正则匹配来精准控制
调试过程:keycloak 配置变动,登陆到jenkins keycloak用户需要注销,重新登陆才会同步keyblock字段,如roles
Jenkins 权限配置
这里先在jenkins role-strategy 配置了 backend-dev 全局read权限


Keycloak 组配置
keycloack 创建 backend-dev
默认登陆没权限

方式一 使用 Realm roles
该方式简单 但后期容易混乱
Relam roles 创建 backend-dev

用户 Role mappding -> Assign Rle 选择 Realm Role -> backend-dev

组用户查看

注: 若keycloak 配置变动,jenkins用户需要注销重新登陆才会同步
现在登陆有权限了,可以看到 backend-dev 带过来了

方式二 使用Client Role
该方式比较清晰,可以直接看出归属
在 client: demo-jenkins -> role 创建 backend-dev

Group backend-dev 映射到 client role : demo-jenkins
这里组层级不重要,这里是为了管理方便,创建主组 demo-jenkins 再创建 子组 backend-dev的。

组加入用户

Client : demo-jenkins -> Client scopes: 进入demo-jenkins-dedicated -> Add mapper -> By configuration -> User Client Role

当前方式用的是roles,没用到groups

登陆test01 有权限了

Evaluate 调试
默认没有audience, Evaluate调试会报错
Clients-> demo-jenkins-> Client scopes -> demo-jenkins-dedicated -> Add mapper -> By configuration -> Audience



SundayHK