Gerrit集成KeyCloak
实践背景:
为了更好的维护代码仓库,实现公司内部员工和外部员工账号集中管理,搭建Keycloak身份认证平台集成Gerrit代码仓库。
Keycloak是什么?
Keycloak是一个开源的、高度可定制的身份认证和授权管理解决方案,它提供了多种认证方法,包括单点登录、OAuth 2.0 和 OpenID Connect,支持各种标准协议和技术,并与许多常见的标准身份提供商(如Facebook、Google、Github、Gerrit、Jenkins等)集成。Keycloak 可以通过 REST API 进行自定义和扩展,还可以使用插件来实现自定义认证和授权方案。它提供了 Web 界面以及一组 REST API,使得应用程序可以轻松地与系统集成。Keycloak 是一款强大的身份认证和授权平台,具有易于使用、安全可靠、高可扩展性等特点,可广泛用于现代应用程序的身份认证和授权管理方案。
为什么要使Keycloak
根据公司Gerrit服务现有认证是通过http认证,需求账号都是通过手动创建,
这点非常不友好,再加上供应商外包模式,http认证就不能区分内部人员和外部人员,使用Keycloak不仅能关联外界认证服务(LDAP),还能兼容本地用户认证(Gerrit用户=LDAP用户+Keycloak本地用户,LDAP用户为内部用户,Keycloak本地用户为外部用户)。
Keycloak实操
安装部署
采用docker方式部署,下载Keycloak image镜像,使用docker run命令进行启动
docker run -d -p 8011:8080 -v /home/kuser/configuration:/opt/jboss/keycloak/standalone/configuration -v /home/kuser/log:/opt/jboss/keycloak/standalone/log --name keycloak-server -e KEYCLOAK_USER=username -e KEYCLOAK_PASSWORD=password jboss/keycloak
注意:将配置文件和日志文件挂载出来,便于分析问题
应用环境配置
创建领域
创建客户端client
创建身份联合
同步ldap到keycloak
修改映射关系
修改Username对应为:sAMAccountName
修改firstName 对应为:givenName
Gerrit实操
用户认证主要是通过Gerrit Oauth插件来实现,用户登入后请求到Keycloak进行用户和密码验证,通过后返回username给到Gerrit。
gerrit安装插件
1) 插件下载链接
https://gerrit-ci.gerritforge.com/
2)插件安装
将插件拷贝到${gerrit_home}/plugins下面或使用命令方式进行安装:
ssh -p 29418 admin@gerritserver
gerrit插件配置
${gerrit_home}/etc/gerrit.config 添加如下配置:
[auth]
type = OAUTH
gitBasicAuthPolicy = http 该配置支持http
logoutUrl=http://keycloakserver:port/auth/realms/test/protocol/openid-connect/logout?redirect_uri=http://gerritserver:port/该配置为退出gerrit同时退出keycloak
[plugin
"gerrit-oauth-provider-keycloak-oauth"]
root-url = http://keycloakserver:port
realm = test
client-id = xxx
client-secret = xxx
use-preferred-username = true
管理员账号迁移
1)先配置一个admin
2)使用现有模式克隆All-Users仓库,并获取gerrit管理员accoutid,并清空管理员邮箱
3)操作步骤2,完成oauth插件安装,并重启gerrit
4)使用keycloak方式注册gerrit管理员
5)修改配置切换type=development_become_any_account或修改配置切换为原有模式,并重启gerrit
6)更新All-Users,查看使用keycloak注册的gerrit管理员acoutid,命令:grep -r "keycloak"
7)再次切换为 type = OAUTH认证方式,重启gerrit,使用keycloak提供的管理员账号登入
账号迁移
实现原理:通过keycloak创建gerrit的账号ID替换原有ID,这个动作重复循
环,通过jenkins自建任务实现
测试结果
登入gerrit,弹出对话框,说明gerrit集成keycloak成功
标签:插件,Gerrit,gerrit,认证,keycloak,Keycloak From: https://blog.51cto.com/u_12911547/8584804