热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Gitlab接入公司内部单点登录的安装和配置教程

本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括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属性在这里插入图片描述


  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单点登录完成

写作不易,随手点个赞呗!!!!


推荐阅读
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 本文介绍如何在Spring Boot项目中集成Redis,并通过具体案例展示其配置和使用方法。包括添加依赖、配置连接信息、自定义序列化方式以及实现仓储接口。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • 本文详细介绍了 Python 中的条件语句和循环结构。主要内容包括:1. 分支语句(if...elif...else);2. 循环语句(for, while 及嵌套循环);3. 控制循环的语句(break, continue, else)。通过具体示例,帮助读者更好地理解和应用这些语句。 ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文介绍了如何通过在数据库表中增加一个字段来记录文章的访问次数,并提供了一个示例方法用于更新该字段值。 ... [详细]
  • 本文详细介绍了Flask项目的配置方法,包括DEBUG模式的设置和配置文件的使用,帮助开发者更好地理解和应用Flask框架。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 本文详细介绍如何使用CSS自定义HTML5视频播放器的样式,涵盖常见属性及跨浏览器兼容性问题。发布时间:2020-09-14 14:46:29;来源:亿速云;阅读量:58;作者:小新。 ... [详细]
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
author-avatar
手机用户2502902913
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有