gitlab用户登录与AD域用户集成
---恢复内容开始---
编辑gitlab.rb文件
sudo vi /etc/gitlab/gitlab.rb
下图是我编辑的内容示例(仅供参考):

编辑以下内容:
gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: 'xxx.xxx.xxx.xxx' #指定ldap服务器地址
port: 389 #默认情况下,LDAP服务在TCP和UDP端口389上侦听连接。LDAPS(基于SSL的LDAP)在端口636侦听。
uid: 'cn' #默认SamAccountName 如果要使用中文登录时就使用默认配置SamAccountName,英文登录为cn
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'cn=administrator,cn=users,dc=xxx,dc=com' #指定ldap服务器的管理员信息即cn=账户,cn=组织单位
password: 'xxx' #指定ldap服务器的管理员密码
active_directory: true
allow_username_or_email_login: true #是否允许用户名或者email登录,true即允许。如果此处用户要使用ldap中的mail进行登录,则mail地址必须为"用户名@xxx.com",否则无法登录。
block_auto_created_users: false
base: 'dc=xxx,dc=com' #指定ldap服务器的base域 user_filter: 'memberOf=CN=gituser,OU=Groups,OU=UsersAndGroups,DC=EXAMPLE,DC=com' #用户登录权限控制,格式为LDAP查询条件,示例按用户组进行控制
attributes:
username: ['cn', 'uid']
email: ['mail', 'email']
EOS
常见的组合是encryption: 'plain'和port: 389,或 encryption: 'simple_tls'和port: 636
内容编辑完成之后,需要使用命令配置重置
gitlab-ctl reconfigure
重启服务
gitlab-ctl restart
测试获取AD域用户列表:
sudo gitlab-rake gitlab:ldap:check
问题:
其他集成的系统使用AD账号都无认证错误的问题,只有Gitlab认证时,提示报错:Invalid credentials
注:
1、检查了一下这个配置文件和里边用的AD信息都正常,没有什么问题,为什么登录时,就是会报错呢,无意之间测试了一个英文账户(cn和SamaccountName)都是英文字母的,发现他能认证成功,这时候我就觉得这个集成没有问题,应该是哪里的么有配置正确。
通过在AD中查看一个中文账户和英文账户的却别,发现两者区别在于cn这个属性上,英文账户的cn属性和SamaccountName属性是一模一样的,但是中文的两个不一样,中文的cn是中文显示名,SamaccountName是登录账号。
于是用了一个中文名字去认证登录,发现通过了,能够正常通过。再返回去查看gitlab.rb配置文件,这时注意到 “uid: ‘cn’”这个配置,此命令式说调用AD中CN属性值作为Gitlab登录账户,当AD中都是英文账户时,这个命令是没有问题的,但是当存在中文账户时,需要改为uid:‘SamAccountName’,这样账户就改为了AD一样的登录账号。
2、还有一个就是bind_dn: 'cn=administrator,cn=users,dc=xxx,dc=com'这个属性没有加cn=users这个组织单位,导致报错
我搭建环境的时候没有配置邮箱,以下内容仅供参考
配置邮箱
配置文件/etc/gitlab/gitlab.rb,配置完成之后需要gitlab-ctl reconfigure 和 gitlab-ctl restart
QQ exmail (腾讯企业邮箱)配置如下,
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
gitlab_rails['smtp_domain'] = "exmail.qq.com"
更多邮箱配置示例:
https://docs.gitlab.com/omnibus/settings/smtp.html
gitlab用户登录与AD域用户集成的更多相关文章
- AD 域服务简介(二)- Java 获取 AD 域用户
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...
- Java利用jcifs集成AD域用户认证
近期一段时间发现AD这东西老火了,尤其是涉及到安全这一方面的,所以AD域用户认证成了如今网络安全方面的产品必备!这里就简单的分享一下,Java通过jcifs集成AD域用户实现认证,以实现网络安全! 我 ...
- JAVA 通过LDAP获取AD域用户及组织信息
因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...
- SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)
前段时间工作很忙,好久没更新博客了,趁国庆休假期间,整理了两个之前积累很实用的企业集成组件,并在真正的大型项目中经受住了考验:.Net版SAP RFC适配器组件和SharePoint 2013修改AD ...
- java修改AD域用户密码使用SSL连接方式
正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
- SharePoint 2010中重置windows 活动目录(AD)域用户密码的WebPart(免费下载)
由于SharePoint 2013推出不久,并非所有的企业都会升级到SharePoint 2013的,毕竟升级不是打打补丁这么简单,更多的企业还是使用Sharepoint 2010版本的,因此本人自行 ...
- python-ldap修改AD域用户密码(CA+SSL)
代码连接:https://github.com/raykuan/ldap-notes 使用python的ldap模块连接AD服务器,有两种方式: 非加密:con = ldap.initialize(' ...
- root用户登录mysql后新建用户提示1045错误
执行以下命令查看root权限 show grants for 'root'@'localhost'; 如果没有显示with grant option,说明是root没有拥有新建授权用户的权限(为什么会 ...
随机推荐
- D3.js的v5版本入门教程(第十三章)—— 饼状图
D3.js的v5版本入门教程(第十三章) 这一章我们来绘制一个简单的饼状图,我们只绘制构成饼状图基本的元素——扇形.文字,从这一章开始,内容可能有点难理解,因为每一章都会引入比较多的难理解知识点,在这 ...
- 转:【微信公众号】微信snsapi_base静默授权与snsapi_userinfo网页授权的实现(不建议使用静默,直接用主动比较方便)
版权声明:本文为CSDN博主「小璐謌」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/qq_37462176/ ...
- 这42个Python小例子,太走心
告别枯燥,60秒学会一个Python小例子.奔着此出发点,我在过去1个月,将平时经常使用的代码段换为小例子,分享出来后受到大家的喜欢. 一.基本操作 1 链式比较 i = 3print(1 < ...
- Win10访问共享文件夹如何取消用户名密码
win10中,开启guest(来宾)账户的步骤是: 右击win10左下角Windows的图标->计算机管理->计算机管理(本地)->系统工具->本地用户和组->用户-&g ...
- IDEA 开发javafx: error: java:package javafx.application does not exist
1)jdk使用1.8, 1.7中未包含javafx相关内容. 2)确保classpath中加入了javafx包路径. 在“file” --> "project structure&qu ...
- mysql使用yum源安装各个版本的mysql数据库
每次想用yum安装旧版本的mysql时,发现都找不到mysql的yum安装源,在官网只能找到最新版本mysql的yum源.后来才知道,原来最新的mysql的yum源也是包含了旧版本的mysql的yum ...
- [LeetCode] 229. Majority Element II 多数元素 II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Note: The a ...
- dubbo源码分析01:SPI机制
一.什么是SPI SPI全称为Service Provider Interface,是一种服务发现机制,其本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件.这样可以在运行时,动态为 ...
- python常用的字符串格式化有哪几种?
常用字符串格式化%和format 皇城PK Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了format这个格式化字符串的方法之后,我认为 ...
- Module 'mysql' already loaded in Unknown on line 0解决方法
Module 'mysql' already loaded in Unknown on line 0解决方法 直接进入php.ini 把;extension=mysql.so注释掉就好了