上一篇文章介紹了svn集成OpenLDAP認證,版本控制除了svn外,git目前也被越來越多的開發者所喜愛,本文將介紹GitLab如何集成openldap實現賬號認證
GitLab集成OpenLDAP認證
- 修改配置文件gitlab.yml
ldap:
enabled: true
servers:
main:
label: 'LDAP'
host: 'ldap.blz.netease.com'
port: 389
uid: 'uid'
method: 'plain'
bind_dn: 'uid=authz,ou=Public,dc=blz,dc=internal'
password: 'ImNVZODT884'
timeout: 10
active_directory: false
allow_username_or_email_login: false
block_auto_created_users: false
base: 'dc=blz,dc=internal'
user_filter: ''
重要配置參數解釋(仔細閱讀上一篇svn集成LDAP認證的文章這些參數會更好理解):
host
:LDAP服務器地址port
:LDAP服務端口uid
:以哪個屬性作為驗證屬性,可以為uid、cn等,我們使用uidmethod
:如果開啟了tls或ssl則填寫對應的tls或ssl,都沒有就填寫plainbind_dn
:search搜索賬號信息的用戶完整bind(需要一個有read權限的賬號驗證通過后搜索用戶輸入的用戶名是否存在)password
:bind_dn用戶的密碼,bind_dn
和password
兩個參數登錄LDAP服務器搜索用戶active_directory
:LDAP服務是否是windows的AD,我們是用的OpenLDAP,這里寫falseallow_username_or_email_login
:是否允許用戶名或者郵箱認證,如果是則用戶輸入用戶名或郵箱都可base
:從哪個位置搜索用戶,例如允許登錄GitLab的用戶都在ou gitlab里,name這里可以寫ou=gitlab,dc=domain,dc=com
filter
:添加過濾屬性,例如只過濾employeeType為developer的用戶進行認證(employeeType=developer)
- 重啟GitLab服務,看到頁面已經有LDAP的登錄選項了
報錯處理
當重啟完成后登陸報:Could not authenticate you from Ldapmain because "Invalid credentials"
查日志有如下報錯:(LDAP) Error saving user: ["Email is not whitelisted. Email domains valid for registration are: domain.com"]
email不在白名單??仔細想了一下原因:
- gitlab之前為了安全配置了 Restricted domains for sign-ups只允許domain.com郵箱的用戶注冊
- 而我OpenLDAP在新建用戶的時候郵箱沒有填寫為空
或許就是這個問題了,登錄lam將用戶的郵箱字段補上(需符合白名單規則)重新登錄便正常了
相關文章推薦閱讀: