一、Jenkins 平台基于 GitLab 的 SSO 授权认证¶
为了避免权限上的报错先设置权限:
1、打开浏览器输入http://jenkins.zhang-qing.com/,输入账号root和密码root登录(这是我设置的账号和密码,实际需要根据你自己设计的账号和密码来定)
2、点击【系统管理】 - 【全局安全配置】
授权策略处选择【登录用户可以做任何事 】

说明:默认设置的授权策略就是【登录用户可以做任何事 】
4.1 安装 Jenkins 插件¶
1、点击gitlab-oauth/选择自己Jenkins对应的GitLab Authentication插件版本。这里我的Jenkins版本为V2.387.2,所以下载1.16版本的GitLab Authentication插件

2、点击【系统管理】-【插件管理】
3、点击【Advanced settings】,点击【选择文件】,选择好本地导入的文件后,点击【Deploy】进行本地导入

4、勾选【Restart Jenkins when installtion is complete and no jobs are running】等待下载完成
4.2 GitLab 创建 App¶
1、在浏览器上输入http://gitlab.zhang-qing.com/,默认的管理员用户root,密码S6n5Y7b81wRrJnKv
2、点击【你的工作】-【管理中心】

点击【应用程序】-【新建应用】

3、勾选相关选项
勾选:Trusted,Confidential;
权限:api,read_user;

4、完成信息填写后,点击【Save application】
name:jenkins-auth
Redirect URI:http://jenkins.zhang-qing.com/securityRealm/finishLogin
说明:http://jenkins.zhang-qing.com是Jenkins地址,/securityRealm/finishLogin是固定后缀

5、完成后如下图:

复制Application ID:0c75e95507ac6a3d7107e02444f0c2ba400477bbea438f586d619e0470300ca2
复制Secret:
1f2cfeabdab15a01102ae8e4e3b42e1e1cbbaae665c135b71466410861c9ca1e
4.3 Jenkins 配置¶
1、点击【系统管理】-【全局安全配置】,【安全域】处选择【GitLab Authentication Plugin】

2、填写下面相关信息
GitLab Web URI:http://gitlab.zhang-qing.com(填写Gitlab地址,注意末尾不要加斜线)
GitLab API URI:http://gitlab.zhang-qing.com(填写Gitlab地址,注意末尾不要加斜线)
Client ID:Gitlab界面的 “Application ID”即0c75e95507ac6a3d7107e02444f0c2ba400477bbea438f586d619e0470300ca2
Client Secret:Gitlab界面的 “Secret”即1f2cfeabdab15a01102ae8e4e3b42e1e1cbbaae665c135b71466410861c9ca1e
3、配置完成后,点击【保存】

4.4 测试验证¶
1、在浏览器上输入http://gitlab.zhang-qing.com,默认的管理员用户root,密码S6n5Y7b81wRrJnKv
2、点击【Admin Area】 -【Users】-【New user】 在Gitlab中创建新的用户

3、填写相关信息
Name:lisi
Username:lisi
Email:lisi@qq.com

4、重新点击【Users】-【Edit】

修改密码为S6n5Y7b81wRrJnKv

5、使用新账户lisi登录Gitlab,会提示你再次修改密码,这里密码修改为S6n5Y7b81wRrJn

6、注销Jenkins当前用户

点击完成后,会跳转到以下界面。此时退出Jenkins,但是没有退出Gitlab

7、继续点击右上角的【登录】,观察到此时会以lisi这个用户登录Jenkins

点击【用户列表】-【lisi】查看用户信息


如果想查看详细信息,需要将lisi用户切换成Jenkins管理用户
4.5 异常修复¶
4.5.1 问题描述¶
当对jenkins配置gitlab授权登录时,可能会存在redirect url配置错误等情况,此时登录 jenkins时则无法登录了,因为此时jenkins会一直跳转到错误的url,从而无法打开 jenkins。
4.5.2 解决办法¶
此时显然是不希望重新卸载安装jenkins的,因为此时完全有可能jenkins上已经存在大量的流水线配置了,因此此时需要通过在后台对jenkins进行处理。
解决问题的思路就是授权登录的方式重新改回admin登录的方式
(1)编辑 /var/jenkins_home/config.xml 文件(如果使用NFS,去到指定的pvc目录找到config.xml 文件修改即可)
从中找到类似如下内容
#这里演示nfs环境修改
[root@nfs01 ~]# cd /opt/sharedata/devops-jenkins-pvc-pvc-d0a1cc4a-789e-4129-9e51-102fe701f0e5/
[root@nfs01 devops-jenkins-pvc-pvc-d0a1cc4a-789e-4129-9e51-102fe701f0e5]# vim config.xml
主要做以下修改
<securityRealm class="org.jenkinsci.plugins.GitLabSecurityRealm">
<gitlabWebUri>http://xxxxxx.cn</gitlabWebUri>
<gitlabApiUri>http://xxxxxx.cn</gitlabApiUri>
<clientID>6841a6932bdca3846d4375a36a3d182081d681e750494718b56590f653e6f351</clientID>
<clientSecret>{AQAAABAAAABQeSsOX2Et0rq8SKcG+PJJKy3MALz7sTmpxeEfCspErVIMZ3OyqhGLRBipi+FDwHakzz9lxU9KIlKaYojh6qUh0TND0/UrnqVDEcWvIbOB8GxKDxeUhLpKhvSq6BL54kMP}</clientSecret>
</securityRealm>
将上述内容替换为如下内容:
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>true</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
然后重启jenkins,即又可以用admin账号登录了
[root@master01 4]# k delete po jenkins-b6bf6dd-vwrhz -ndevops
4.6 总结¶
1、通过GitLab OAuth2.0授权认证控安全可追溯;
2、账号统一管理授权;