背景

公司内部有基于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属性

  1. 点击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接入公司内部单点登录相关推荐

  1. 在浙江大学做全校单点登录接入的心得体会,采用sun公司的单点登录技术

    去年在浙大做项目,遇到了单点登录需要,总结感受如下: 1. 不想花钱,又想办事,不大可能,不烧个上千万,能做出个像样的东西,还真不太可能, 你在网上看,到处是开源,到处是免费的,但是真正想搞点儿事出来 ...

  2. grafana授权公司内部邮箱登录 ldap配置

    vi /etc/grafana/grafana.ini    (文件不一定是这个噢,看自己启动服务的配置文件) 修改配置: [auth.ldap] enabled = true config_file ...

  3. 公司账号服务单点登录到gitlab

    公司账号服务单点登录到gitlab 目标:使用oauth协议,点击挂在系统的gitlab链接,直接登录到gitlab的服务,如果没有账号则新建 操作: 一.服务端: 1.在自己的系统内添加oauth协 ...

  4. 折衷的方式实现php与ruby共享session实现单点登录

    2019独角兽企业重金招聘Python工程师标准>>> 1.背景 前一阵部门要做一个内部讨论区,希望能和原有的gitlab集成在一起. discuz虽然成熟但是感觉不够高大上,找了几 ...

  5. 有关单点登录的几种方案

    前几天,花了比较多时间在研究Eentity framework, 从今天开始,我要把时间集中在,介绍以前做门户网站的一些好的项目方案了. 首先介绍一下,单点登录吧.一个企业,要做信息化集成,要做门户, ...

  6. 自动化运维平台中的统一认证接入与单点登录实现

    前言: 在运维开发的众多系统中,怎么能更好的管理用户账号和密码,以及做到统一的brac权限角色配置系统. 以前记得最初做运维开发项目的时候,每个app都是一套用户密码,顶多做了一个加密流转,申请接入的 ...

  7. Dynamics 365 CRM 接入统一身份认证平台(单点登录集成)

    打算将D365 CRM接入公司统一身份认证平台. 前提:D365 已IFD部署,因为要借助ADFS来完成单点登录. 登录ADFS服务器,打开ADFS,本次集成,统一身份认证为上游,ADFS是下游,因为 ...

  8. 业务系统接入单点登录服务

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11377620.html 一:单点登录业务接入场景 对于大型企业,内部有各种各样的办公OA.业务系统,员工使用 ...

  9. springboot接入cas单点登录后跳转不到我需要跳转到页面_单点认证的一点心得

    最近项目要接入一批项目,接入必然涉及单点认证,在对接的单点认证主要分为几类,oauth .cas.还有一些其他的. 其实主要分为2类: 一类对方提供登录接口,我们做登录页面,用户输入用户名和密码,我们 ...

  10. Gitlab集成odoo单点登录

    Gitlab集成odoo单点登录 1.Gitlab使用oauth2单点登录的背景 OAuth代表资源所有者向客户端应用程序提供对服务器资源的"安全委派访问".实际上,OAuth允许 ...

最新文章

  1. 【HTML5游戏开发】简单的《找不同汉字版》,来考考你的眼力吧
  2. pro缺点和不足 一加7t_2021年元旦有哪些一加手机值得购买?
  3. 如何隐藏 Safari 中 input 标签的 autofill 图标
  4. win10安装程序无法将配置为在此计算机,win10安装程序无法正常启动(完美解决)
  5. 置顶带滚动效果_前端面试:如何实现轮播图效果?
  6. Java生态系统– 2014年我的5大亮点
  7. 云+X案例展 | 传播类:九州云 SD-WAN 携手上海电信,助力政企客户网络重构 换新颜
  8. 闭合导线坐标计算表_测量员人员必备:8套工程测量公式计算表,输入参数自动得出结果...
  9. 测试kafka的连通性,自导自演生产者与消费者
  10. shadow Dom(shadowRoot) 访问
  11. 系统调用之lseek
  12. paip.c++ qt 外部dll共享库的导入以及引用
  13. 20151210编译高通的qca9531的wireless版本 修改版本4
  14. 基于Java实现一个简单的单词本Android App
  15. CentOS 7找回root密码
  16. 淘宝购物如何找优惠券_淘宝上买衣服怎么省钱
  17. 【亲测有效】树莓派4B安装realsense(Intel深度摄像头)
  18. 【转载】无公网IP搞定群晖+ZEROTIER ONE实现内网穿透
  19. 美团点评武汉场后台开发
  20. 一步步学习zynq软硬件协同开发(AX7010/20)【FPGA+ReWorks】:创建自定义IP实现rtc读写

热门文章

  1. Java实现文件上传和下载
  2. 微搭自定义组件库开发环境搭建教程
  3. python程序设计基础董付国 pdf-董付国《Python程序设计基础 第2版》PDF
  4. 三阶矩阵的lu分解详细步骤_矩阵的LU分解
  5. 天池大数据竞赛 Spaceack带你利用Pandas,趋势图与桑基图分析美国选民候选人喜好度
  6. 团队管理13--设定工作目标
  7. TFIDF之python实现
  8. 程序猿DD元旦送书:第二弹!
  9. 安卓盒子root--包好
  10. PDF连接服务器信息,远程连接服务器.pdf