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

官網文檔:https://docs.gitlab.com/ee/administration/auth/how_to_configure_ldap_gitlab_ce/#how-to-configure-ldap-with-gitlab-ce

內容編輯完成之后,需要使用命令配置重置

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM