1.配置gitlab使用CAS服务登录

需要配置的相关参数如下:

  1. 启用Omniauth登录。设置Omniauth_enable 参数为true,在版本11.4以后是默认开启的。
    只使用cas服务进行登录。设置omniauth_auto_sign_in_with_provider参数为cas3。
  2. 配置omniauth_allow_single_sign_on参数控制第三方登录的用户自动创建。为true的时候,所有的第三方登录都会自动创建用户,为false的时候,所有的第三方登录都不会自动创建用户。还可以是list,比如[‘cas3’],只为列表里有的第三方登录的自动创建用户。
  3. 配置omniauth_block_auto_created_users参数控制自动创建的用户是否被锁定,为true的时候,自动创建的用户全部被锁定,需要管理员操作解锁后才能使用。为false的时候,自动创建的用户可正常使用,因此当设置为false的时候,就需要保证,对于第三方登录的用户完全可控。
  4. 配置omniauth_providers参数确定具体的cas的协议的相关链接。

根据安装方式不同,配置文档的路径不同,配置文档的格式也不同。

  1. 使用安装包安装,配置文档的路径:/etc/gitlab/gitlab.rb
  2. 使用源代码安装,配置文档的路径:GITPATH/config/gitlab.yml

使用安装包安装的需要新增的配置代码如下:

gitlab_rails['omniauth_allow_single_sign_on'] = false
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_auto_sign_in_with_provider'] = 'cas3'
gitlab_rails['omniauth_providers'] = [{"name"=> "cas3","label"=> "cas-wenba","args"=> {"url"=> 'http://localhost:8091',"login_url"=> '/sso/login',"service_validate_url"=> '/sso/p3/serviceValidate',"logout_url"=> '/sso/logout'}}
]

1.1 配置注销登录的接口

经测试,在注销登录时,gitlab不会自动调用配置的cas的注销接口,这是gitlab目前的一个bug。我们可以采用登录root账号,然后配置After sign out path为cas的注销接口来解决。配置方式如下:

  1. 登录root账号,进入admin area,选择settings ,选择general,选择sign-in retrictions。
  2. 配置After sign out path 为cas服务的注销接口。然后点击“save changes”保存修改。

    PS:After sign out path 中的url必须带service参数,该service参数是cas注销登录后的重定向地址,所以service的值为gitlab的登录url。

2. gitlab账号与CAS账号之间的关系

gitlab自己本身维护一套用户系统,cas服务也一套用户系统,gitlab可以将两者关联起来,然后用户可以选择其中一种方式进行登录就可以了。

根据用户是否有gitlab账号,可以分为两种情况:

  1. 已有gitlab账号的,用户可按原来的登录方式进行登录,然后在用户设置里关联cas账号,也可以由root账号进行统一的关联。
  2. 没有gitlab账号的,在直接使用cas服务登录的时候,根据参数的配置,分为以下几种情况:
    2.1 自动创建同名的gitlab账号,锁定该账号。需要登录root账号,解锁该账号,然后完善个人信息以后,可以使用。配置如下
gitlab_rails['omniauth_allow_single_sign_on'] = ['cas3']
gitlab_rails['omniauth_block_auto_created_users'] = true

2.2 自动创建同名的gitlab账号,不锁定该账号。完善个人信息以后,就可以使用。

gitlab_rails['omniauth_allow_single_sign_on'] = ['cas3']
gitlab_rails['omniauth_block_auto_created_users'] = false

2.3 不创建账号,直接提示”需要绑定已有的账号"。

gitlab_rails['omniauth_allow_single_sign_on'] = false

3. 使用Root账号将普通gitlab账号和CAS账号关联和解除关联

3. 使用Root账号将普通gitlab账号和CAS账号关联和解除关联

除了用户自己可以进行gitlab账号和cas账号的关联外,root账号可以为所有的gitlab账号关联cas账号。具体步骤如下:

  1. 登录root账号,进入admin area,选择Users。
  2. 点击需要关联cas账号的用户。选择identities。点击new identity,为该用户新增一个identity
  3. 选择一个provider,也就是前面配置的cas服务,输入identifier,点击”save changes",即可完成gitlab账号与cas账号的绑定。
    PS:这里的identifier,是gitlab向cas服务器端发送验证请求的时候,验证成功后,cas服务器返回给gitlab的值。我们的cas服务返回的是用户的用户名,因此,我们的identifier需要填用户名。

    3.2 普通gitlab账号和CAS账号关联的解除和修改

与前面关联账号的步骤一样,登录root账号,进入admin area,选择Users,点击需要解除关联cas账号的用户,选择identities。delete相应的identifier,即可解除关联,选择edit进行identifier的编辑修改。

相关链接

  • gitlab接入cas官方文档
  • 注销url不起作用的bug

GitLab使用CAS服务进行单点登录配置相关推荐

  1. CAS服务下单点登录(服务端与客户端)

    转自:http://www.open-open.com/lib/view/open1359286846414.html 此文的目的是为了加深自己的理解,做一个备份与分享 过程全为自己的实际操作步骤 第 ...

  2. CAS单点登录-配置中心(三)

    CAS单点登录-配置中心(三) 本章计划及内容 计划: 微服务概念 配置中心充当角色 搭建配置中心 cas连接配置中心 内容: 采用 spring cloud Dalston SR3搭建配置中心 采用 ...

  3. xxl-sso kisso cas三个单点登录系统分析

    xxl-sso kisso cas三个单点登录系统分析 xxl-sso 统一在一个地方登录 客户端和服务端同时连接一个redis 登录成功后将用户信息写入redis. 登录成功返回 sessionId ...

  4. CAS 实现的单点登录

    --任何的成功都不是一蹴而就,经验需要慢慢积累.沉淀! 项目里面用到了CAS单点登录,最近也简单的从应用层面简单研究了下CAS这个开源架构. 1. 基本概念:cookie, session, 会话co ...

  5. 学习CAS实现SSO单点登录

    学习CAS实现SSO单点登录 网上找了几篇比较详细的教程,在这记录一下: 原理: CAS实现SSO单点登录原理 教程: 1.CAS实现单点登录(SSO)经典完整教程 2.SSO之CAS单点登录实例演示 ...

  6. WEB服务在单点登录系统中的应用研究

    WEB服务在单点登录系统中的应用研究 转载于:https://blog.51cto.com/hnoas/105573

  7. 基于saml2.0的平台(适用多种平台)单点登录配置,以okta为例

    目录 现状和问题 解决方案原理 基于saml2.0协议的Java实现 基于OKTA平台的实例演示 结论 题外话 现状和问题 事情的起因在于接到一个需求,要求在SAP的succesfactory中使用单 ...

  8. 【GitLab、Jira、Confluence 单点登录实现】之 CAS 系统部署

    CAS 系统部署 一.CAS 部署可以采用的方式 CAS作为一款成熟的开源SSO系统,应该部署起来非常容易.但实际部署过程中,因为众所周知的网络原因,没少花费时间,最终探索出来一条顺利的渠道. 尝试1 ...

  9. CAS单点登录-配置数据库认证方式

    接下来,说一下配置数据库认证单点登录 如果你之前的单点登录搭成功了,之后就简单多了,只需要添加一些配置和jar包即可.若未成功,请参考CAS单点登录入门配置 步骤: 1.引入相关jar包 2.创建数据 ...

最新文章

  1. python序列化和反序列化_python反序列化免杀
  2. 图解SQL Server 安全函数的使用
  3. 添加IFrame导致内存溢出的解决过程(IE浏览器,目前发现了原因,还未解决)...
  4. 10年老电脑如何提速_中国电信宣布将对宽带免费提速,最高500Mbps
  5. Mysql 零距离-入门(六)数据唯一约束性
  6. Properties的使用
  7. 实践实战:在PoC中的Oracle 12c优化器参数推荐(含PPT)
  8. 微信小程序app配置指南
  9. 图解设计模式+代码(一):创建型模式
  10. 斐波那契java_递归之斐波那契数列java的3种方法
  11. C++基础之detele和detele[]
  12. 背景图片虚化的效果的css样式的实现
  13. 自律的力量 No Excuse: the power of self-discipline
  14. 论文阅读:Semantic Parsing on Freebase from Question-Answer Pairs
  15. oracle认证考试试题及答案,oracle考试试题_oracle认证考试模拟题_oracle试题及答案房地产估价师考试试题_房地产...
  16. MMD新人学习记录博客1
  17. PAT_乙级_1046. 划拳(15)
  18. 扫描电镜图片的Matlab分析,基于Matlab的图像增强与复原技术在SEM图像中的应
  19. Python 6 循环break,continu语句pass,else
  20. 视频怎么制作虚化边框背景的效果?

热门文章

  1. 红蓝攻防演练过程中零失陷经验分享
  2. 论文笔记:Parallel Tracking and Verifying: A Framework for Real-Time and High Accuracy Visual Tracking...
  3. Word里能放电影吗?
  4. 微信小程序 Basic Auth 前后端restful api进行身份验证
  5. 消息推送----微信小程序,公众号
  6. 如何做好项目管理任务分配
  7. 真方位角计算文献汇总:球面三角形两点之间的方位
  8. 卷积、转置卷积、可分离卷积、分组卷积、空洞卷积的理解
  9. 国家高新技术企业即将启动
  10. 基于51单片机的汽车倒车防撞报警系统