LDAP落地實戰(三):GitLab整合OpenLDAP認證

運維咖啡吧發表於2019-03-04

上一篇文章介紹了svn整合OpenLDAP認證,版本控制除了svn外,git目前也被越來越多的開發者所喜愛,本文將介紹GitLab如何整合openldap實現賬號認證

GitLab整合OpenLDAP認證

  1. 修改配置檔案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等,我們使用uid
  • method:如果開啟了tls或ssl則填寫對應的tls或ssl,都沒有就填寫plain
  • bind_dn:search搜尋賬號資訊的使用者完整bind(需要一個有read許可權的賬號驗證通過後搜尋使用者輸入的使用者名稱是否存在)
  • password:bind_dn使用者的密碼,bind_dnpassword兩個引數登入LDAP伺服器搜尋使用者
  • active_directory:LDAP服務是否是windows的AD,我們是用的OpenLDAP,這裡寫false
  • allow_username_or_email_login:是否允許使用者名稱或者郵箱認證,如果是則使用者輸入使用者名稱或郵箱都可
  • base:從哪個位置搜尋使用者,例如允許登入GitLab的使用者都在ou gitlab裡,name這裡可以寫ou=gitlab,dc=domain,dc=com
  • filter:新增過濾屬性,例如只過濾employeeType為developer的使用者進行認證(employeeType=developer)
  1. 重啟GitLab服務,看到頁面已經有LDAP的登入選項了

image

報錯處理

當重啟完成後登陸報: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不在白名單??仔細想了一下原因:

  1. gitlab之前為了安全配置了 Restricted domains for sign-ups只允許domain.com郵箱的使用者註冊
  2. 而我OpenLDAP在新建使用者的時候郵箱沒有填寫為空

或許就是這個問題了,登入lam將使用者的郵箱欄位補上(需符合白名單規則)重新登入便正常了

掃碼關注公眾號檢視更多原創文章

相關文章