---恢復內容開始---
編輯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