【原创】Gitlab和AD账号集成,账号登录时报错:Invalid credentials

背景:
公司搭建了Gitlab,然后和AD账号进行集成,采用AD账号进行认证。
问题:
其他集成的系统使用AD账号都无认证错误的问题,只有Gitlab认证时,提示报错:Invalid credentials
解决办法:
通过参考这个帖子参考帖,知道问题出在了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: '192.168.0.6'
port: 389
uid: 'cn'
method: 'plain'
bind_dn: 'cn=Young,cn=users,dc=Wyoungers,dc=com'
password: '123456'
active_directory: true
allow_username_or_email_login: false
block_auto_created_users: false
base: 'dc=Wyoungers,dc=com'
user_filter: ''
# attributes:
# username: ['uid', 'userid', 'sAMAccountName']
# email: ['mail', 'email', 'userPrincipalName']
# name: 'cn'
# first_name: 'givenName'
# last_name: 'sn'
# ## EE only
# group_base: ''
# admin_group: ''
# sync_ssh_keys: false
EOS

检查了一下这个配置文件和里边用的AD信息都正常,没有什么问题,为什么登录时,就是会报错呢,无意之间测试了一个英文账户(cn和SamaccountName)都是英文字母的,发现他能认证成功,这时候我就觉得这个集成没有问题,应该是哪里的么有配置正确。
通过在AD中查看一个中文账户和英文账户的却别,发现两者区别在于cn这个属性上,英文账户的cn属性和SamaccountName属性是一模一样的,但是中文的两个不一样,中文的cn是中文显示名,SamaccountName是登录账号。
于是用了一个中文名字去认证登录,发现通过了,能够正常通过。再返回去查看gitlab.rb配置文件,这时注意到 “uid: ‘cn’”这个配置,此命令式说调用AD中CN属性值作为Gitlab登录账户,当AD中都是英文账户时,这个命令是没有问题的,但是当存在中文账户时,需要改为uid:‘SamAccountName’,这样账户就改为了AD一样的登录账号。

结果:
到此我们已经解决了问题,进行分析发现,我们有时候不能直接照搬Gitlab的源代码,还需要进行修改,以适应新的变化。

你可能感兴趣的:(【原创】Gitlab和AD账号集成,账号登录时报错:Invalid credentials)