gitlab接入公司内部单点登录
背景
公司内部有基于oauth2协议自建的单点登录服务,现将原有的各子系统单独维护的登录统一迁移至单点登录。在迁移gitlab时,遇到的坑比较多,所以在这里记录下。
安装gitlab
实验环境是通过dokcer安装的ce版本的gitlab,
gitlab版本号: 13.12.1
编辑gitlab.rb文件
如果你是基于源码的方式安装,请编辑 gitlab.yml 文件
gitlab官网地址
gitlab_rails['omniauth_enabled'] = true # 开启omniauth
gitlab_rails['omniauth_allow_single_sign_on'] = true # 此处值为true的话,当gitlab不存在该用户时会自动在gitlab中创建用户
gitlab_rails['omniauth_block_auto_created_users'] = false # 是否禁用自动创建的gitlab用户 ,为false则表示自动创建的用户不禁用。为true时则表示禁用,需要gitlab管理员手动解除禁用
gitlab_rails['omniauth_auto_link_user'] = true # 是否自动关联已经存在的gitlab账号
gitlab_rails['omniauth_providers'] = [{'name' => 'oauth2_generic', 'app_id' => 'xxxxx', # oauth2的app_id 由sso服务进行分配'app_secret' => 'xxxxx', # oauth2的app_secret 由sso服务进行分配'args' => {client_options: {'site' => 'http://127.0.0.1:9001', # sso的地址'authorize_url' => '/sso/login', # 认证URL'token_url' => '/sso/api/oauth/gitlab', # 获取token的URL'user_info_url' => '/sso/api/user' # 获取用户信息的URL},user_response_structure: {root_path: [], # i.e. if attributes are returned in JsonAPI format (in a 'user' node nested under a 'data' node)id_path: ['uid'], # 此处的用户信息如何配置 我会在下面详细说明attributes: { name: 'username', nickname: 'nickname',email:'email'} # 此处的用户信息如何配置 我会在下面详细说明# optionally, you can add the following two lines to "white label" the display name# of this strategy (appears in urls and Gitlab login buttons)# If you do this, you must also replace oauth2_generic, everywhere it appears above, with the new name. name: 'SSO', # 此处的属性值会在登陆处,以及设置identitifier时使用到,建议英文(不支持中文)strategy_class: "OmniAuth::Strategies::OAuth2Generic" # Devise-specific config option Gitlab uses to find renamed strategy}}
]
配置说明
user_response_structure
此处的配置是映射你的sso服务 user_info_url接口返回的用户信息。
如果你的用户信息接口返回的结构为
{"code":200,"data":{"uid":111,"username":"zhangsan","nickname":"张三","email":"zhangsan@kiki.com"}
}
那么 root_path 可以不用配置
id_path建议配置成用户的唯一标识
attributes配置我就不过多解释了
更多详细注释请参考gitlab官网:
https://gitlab.com/satorix/omniauth-oauth2-generic#gitlab-config-example
配置完成后重启gitlab
测试
马赛克中的名称 同配置中的name属性
- 点击Sign in with 会跳转至 配置中sso服务的认证URL
2.认证成功后会sso会根据oauth2协议redirect 到gitlab的回调地址(回调地址我们有个后台可以配置app_id ,secret,redirect_url啥的)
3.gitlab获取access_token
回调sso的token_url接口获取access_token
4.gitlab获取用户信息
5.登录测试
以上配置完成后,重启gitlab,点击登录按钮,这时会跳转到你配置的sso登录页面
sso服务验证成功后会跳转至gitlab,gitlab会回调sso获取用户的信息接口取当前用户信息,若发现该用户不在gitlab中,会在gitlab中创建该用户。
至此gitlab接入外部oauth单点登录完成
写作不易,随手点个赞呗!!!!
gitlab接入公司内部单点登录相关推荐
- 在浙江大学做全校单点登录接入的心得体会,采用sun公司的单点登录技术
去年在浙大做项目,遇到了单点登录需要,总结感受如下: 1. 不想花钱,又想办事,不大可能,不烧个上千万,能做出个像样的东西,还真不太可能, 你在网上看,到处是开源,到处是免费的,但是真正想搞点儿事出来 ...
- grafana授权公司内部邮箱登录 ldap配置
vi /etc/grafana/grafana.ini (文件不一定是这个噢,看自己启动服务的配置文件) 修改配置: [auth.ldap] enabled = true config_file ...
- 公司账号服务单点登录到gitlab
公司账号服务单点登录到gitlab 目标:使用oauth协议,点击挂在系统的gitlab链接,直接登录到gitlab的服务,如果没有账号则新建 操作: 一.服务端: 1.在自己的系统内添加oauth协 ...
- 折衷的方式实现php与ruby共享session实现单点登录
2019独角兽企业重金招聘Python工程师标准>>> 1.背景 前一阵部门要做一个内部讨论区,希望能和原有的gitlab集成在一起. discuz虽然成熟但是感觉不够高大上,找了几 ...
- 有关单点登录的几种方案
前几天,花了比较多时间在研究Eentity framework, 从今天开始,我要把时间集中在,介绍以前做门户网站的一些好的项目方案了. 首先介绍一下,单点登录吧.一个企业,要做信息化集成,要做门户, ...
- 自动化运维平台中的统一认证接入与单点登录实现
前言: 在运维开发的众多系统中,怎么能更好的管理用户账号和密码,以及做到统一的brac权限角色配置系统. 以前记得最初做运维开发项目的时候,每个app都是一套用户密码,顶多做了一个加密流转,申请接入的 ...
- Dynamics 365 CRM 接入统一身份认证平台(单点登录集成)
打算将D365 CRM接入公司统一身份认证平台. 前提:D365 已IFD部署,因为要借助ADFS来完成单点登录. 登录ADFS服务器,打开ADFS,本次集成,统一身份认证为上游,ADFS是下游,因为 ...
- 业务系统接入单点登录服务
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11377620.html 一:单点登录业务接入场景 对于大型企业,内部有各种各样的办公OA.业务系统,员工使用 ...
- springboot接入cas单点登录后跳转不到我需要跳转到页面_单点认证的一点心得
最近项目要接入一批项目,接入必然涉及单点认证,在对接的单点认证主要分为几类,oauth .cas.还有一些其他的. 其实主要分为2类: 一类对方提供登录接口,我们做登录页面,用户输入用户名和密码,我们 ...
- Gitlab集成odoo单点登录
Gitlab集成odoo单点登录 1.Gitlab使用oauth2单点登录的背景 OAuth代表资源所有者向客户端应用程序提供对服务器资源的"安全委派访问".实际上,OAuth允许 ...
最新文章
- 【HTML5游戏开发】简单的《找不同汉字版》,来考考你的眼力吧
- pro缺点和不足 一加7t_2021年元旦有哪些一加手机值得购买?
- 如何隐藏 Safari 中 input 标签的 autofill 图标
- win10安装程序无法将配置为在此计算机,win10安装程序无法正常启动(完美解决)
- 置顶带滚动效果_前端面试:如何实现轮播图效果?
- Java生态系统– 2014年我的5大亮点
- 云+X案例展 | 传播类:九州云 SD-WAN 携手上海电信,助力政企客户网络重构 换新颜
- 闭合导线坐标计算表_测量员人员必备:8套工程测量公式计算表,输入参数自动得出结果...
- 测试kafka的连通性,自导自演生产者与消费者
- shadow Dom(shadowRoot) 访问
- 系统调用之lseek
- paip.c++ qt 外部dll共享库的导入以及引用
- 20151210编译高通的qca9531的wireless版本 修改版本4
- 基于Java实现一个简单的单词本Android App
- CentOS 7找回root密码
- 淘宝购物如何找优惠券_淘宝上买衣服怎么省钱
- 【亲测有效】树莓派4B安装realsense(Intel深度摄像头)
- 【转载】无公网IP搞定群晖+ZEROTIER ONE实现内网穿透
- 美团点评武汉场后台开发
- 一步步学习zynq软硬件协同开发(AX7010/20)【FPGA+ReWorks】:创建自定义IP实现rtc读写