我是键盘斗篷的初学者。我需要一些帮助。
我有SSO解决方案,我想将它与jenkins集成。在这一点上,我想允许一些基于角色的用户。
OpenID -- keycloak -- jenkins :所有在openid中的用户都可以登录jenkins (我不想要)
OpenID -- keycloak (检查角色) -- jenkins :所有在openid中并且在keycloak中具有特定角色的用户都可以登录jenkins (我想)
我认为这是一个非常简单和常见的使用keycloak的例子,但是我找不到解决方案。
我所做的步骤在这里。
在jenkins中安装keycloak插件。
安装keycloak (使用helm的5.0.0版)
创建领域
创建身份提供者(OpenID)
创建客户端(名为jenkins)
安装选项卡>将Keycloak OIDC JSON复制到Jenkins
(请参阅。
https://wiki.jenkins.io/display/JENKINS/keycloak-plugin
)
现在,我可以成功地登录jenkins了。
在领域中的角色中创建角色
在(jenkins)客户端中,启用授权
授权选项卡>策略选项卡>创建策略>角色
选择realm role并选中required
在Jenkins配置中更新JSON。
它已经完成了,但它不起作用。
发布于 2019-12-12 21:43:30
我通过以下方式管理它(使用Keycloak 8.0.1,Jenkins 2.208):
密钥罩
创建领域

创建客户端"jenkins“-将根url设置为Jenkins-url (例如
http://127.0.0.1:8080
)

在客户端" Jenkins“中,选择选项卡"installation”-格式"keycloak OIDC JSON“-复制到下面Jenkins设置的剪贴板

创建角色"jenkins
_
管理员“
创建角色"jenkins
_
只读“

创建用户"admin“并分配角色"jenkins”
_
管理员“
创建命名用户并分配角色"jenkins
_
只读“

詹金斯
安装插件“
Keycloak身份验证插件
“
安装插件“
矩阵授权策略插件
“
管理Jenkins -“配置系统”-“全局密钥罩设置”-输入之前复制的JSon (密钥罩步骤3)到“密钥罩JSON”区域

管理Jenkins -管理和分配角色-管理角色-全局角色-(如果不存在)添加角色"admin“并选中所有复选框-保存
管理Jenkins -管理和分配角色-管理角色-全局角色-添加角色“阅读
_
仅“与”整体读取“选中-保存

管理Jenkins -管理和分配角色-分配角色-添加组"jenkins
_
admin“添加到全局角色,然后选择"admin”-保存
管理Jenkins -管理和分配角色-分配角色-添加组"jenkins
_
readonly“到全局角色并选择"read
_
仅“-保存

“配置全局安全”-选择“安全领域”:"Keycloak身份验证插件“
“配置全局安全”-选择“授权”:“基于角色的策略”-保存

您现在应该被重定向到Keycloak登录。尝试以具有admin权限的admin和具有只读权限的指定用户身份登录。
发布于 2021-03-01 17:28:08
除此之外
Christop的回答
:
您需要在keycloak客户端下为Group Membership配置一个Mapper。
通过确保"groups“出现在access token的作用域中来验证这一点。
另外一点,你可以使用两个插件中的一个:
任一keycloak插件
或者
oic-auth插件(open id connect)
实际上,keycloak最终实现了openid连接协议。
最后一点:
让configuration-as-code成为jenkins堆栈中必不可少的插件。
在configuration-as-code插件中始终检查示例,它可能会有很大帮助。对于这种情况,这些链接可以提供很多帮助:
- [https://github.com/jenkinsci/oic-auth-plugin/pull/78/files](https://github.com/jenkinsci/oic-auth-plugin/pull/78/files)
- [https://github.com/jenkinsci/configuration-as-code-plugin/issues/994#issuecomment-523643362](https://github.com/jenkinsci/configuration-as-code-plugin/issues/994#issuecomment-523643362)https://stackoverflow.com/questions/56042425
复制相似问题