Jenkins集成Keycloak

发布于 2023年12月20日

Jenkins版本:2.332.2-lts
Keycloak版本:20.0.5

Keycloak创建realm
图片1-itlg.png
图片2-frij.png
点击Clients—>Create client
图片3-pvld.png
图片4-eehd.png
选择Action-->Download adapter config,把json字符串复制出来备用.
图片5-jggp.png
图片6-nmpb.png
Jenkins地址:http://10.0.0.10:8400/*
图片7-bwjh.png
Jenkins:
在Jenkins中设置base url
JenkinsURL设置为Jenkins的域名。
安装Keycloak Authentication Plugin插件
图片8-whhh.png
点击Manage Jenkins -> Configure Global Security -> Security Realm, 选择Keycloak Authentication Plugin, 保存。
图片9-iuqc.png
点击Manage Jenkins -> Configure System 找到KeyCloak Json, 把上面导出的字符串贴进去。保存
图片10.png
注意!!!需要把导出json中的confidential-port和policy-enforcer 字段删掉, 否则jenkins会无法登陆

保存成功后就可以登录测试了

如遇域名不通的
在宿主机与容器内都添加/etc/hosts
10.0.0.10 sso.demo.com
如果keycloak是自签名的域名,那么会遇到如下错误
sun.security,provider.certpath.5un(ertPathbuilderException:
unable to find valid certification path to requested tanget
这是因为域名是不安全的,需要将证书添加信任
将证书放入容器,添加信任:
keytool -import -alias HWCX -file /root/sso.demo.com.crt -keystore /opt/java/openjdk/lib/security/cacerts -storepass changeit #这个路径是jdk的路径 自行搜索
如添加信任后还是遇到报错
javax.net.ssl.SSLException: Certificatefor <sso,demo.com> doesn't match any of the subiect alternative names: [www.demo.com]
这是因为自签的证书域名不对,访问的域名是sso.demo.com实际上在网址上使用的证书是www.demo.com的,需要签发一个名为sso.demo.com的证书替换上去。