2015-09-05 339 views
1

我有一個Gitlab服務器安裝在某處,我試圖讓它爲我的AD用戶工作。我有以下配置:Gitlab LDAP身份驗證

label: 'LDAP' 
host: 'myserver.com' 
port: 389 
#uid: '' 
method: 'plain' # "tls" or "ssl" or "plain" 
bind_dn: '' 
#password: '' 
active_directory: true 
allow_username_or_email_login: true 
block_auto_created_users: false 
base: '' 
user_filter: '' 
## EE only 
group_base: '' 
admin_group: '' 
sync_ssh_keys: false 

但我不能提供設置登錄。

我不是很熟悉,LDAP設置,但是這是在PHP代碼是用來登錄到我們的內部系統和完美的作品:

$ldap = ldap_connect("ldap://myserver.com/"); 
if(!ldap_bind($ldap, "DOMAIN\\$username", $password)) { 
    echo "Authentication Error"; 
} else { 
     echo "OK"; 
} 

我以爲我不知道在哪裏把DOMAIN放在Gitlab配置中。

我已經通過問題和Google搜索了一下,沒有任何工作。

我也嘗試使用usernameDOMAIN\username[email protected][email protected]登錄,但沒有工作。在日誌

對於一些配置(我不記得到底是什麼,但我會找到它,如果它是必要的),我得到以下錯誤:

ArgumentError (uid or filter MUST be provided): 

編輯:

這是我的配置如何看起來像現在,仍然無法正常工作。

label: 'LDAP' 
host: 'myserver.com' 
port: 389 
uid: 'sAMAccountName' 
method: 'plain' # "tls" or "ssl" or "plain" 
bind_dn: 'CN=gitldap,CN=Users,DC=myserver,DC=com' 
password: 'thepassword' 
active_directory: true 
allow_username_or_email_login: true 
#block_auto_created_users: false 
base: 'ou=MyServer,dc=myserver,dc=com' 
#user_filter: '' 
### EE only 
#group_base: '' 
#admin_group: '' 
#sync_ssh_keys: false 

而對於一個參考,這是一個SVN服務器如何使用我們的廣告:

SVNParentPath /var/svn 
SSLRequireSSL 
AuthType Basic 
AuthName "MyServer Source Control System" 
AuthBasicProvider ldap 
AuthzLDAPAuthoritative on 
AuthLDAPBindDN "CN=svnldap,CN=Users,DC=myserver,DC=com" 
AuthLDAPBindPassword 'thepassword' 
AuthLDAPURL "ldap://dc-2.myserver.com:389/ou=MyServer,dc=myserver,dc=com?sAMAccountName" NONE 
AuthzSVNAccessFile /etc/svn/dav_svn.authz 
Require valid-user 

我不得不提到myserver.comdc-2.myserver.com決心同一臺機器。

+0

是'gitldap'授權讀取的LDAP目錄林中的帳戶,以其「'thepassword'」帳戶? – VonC

+0

我這麼認爲。我告訴支持人員創建一個類似'svnldap'的帳戶。我怎麼能檢查,就像'ldapsearch'一樣? – vfsoraki

+0

我寧願使用ldapbind(http://docs.oracle.com/cd/B14099_19/idmanage.1012/b15883/syntax_datamngmnt007.htm)。請參閱http://superuser.com/a/708701/141 – VonC

回答

0

第一步是檢查與ldapbind(參見「Using ldapbind to Authenticate」)的LDAP綁定。

由於OP提到,允許檢測如果用戶ID是正確的。

我不得不使用通用名稱,它是綁定dn中的名字+姓氏。
我在使用用戶名,錯誤。
我用Git LDAP代替gitldap和一切工作正常

0

您需要爲GitLab創建AD用戶帳戶(「服務帳戶」),其DN和密碼必須在GitLab配置中指定爲bind_dnpassword

uid應該設置爲'sAMAccountName'。

這與您在PHP中所做的不同。在那裏您使用用戶的憑據通過LDAP訪問AD。 GitLab將使用它自己的用戶帳戶,然後查找用戶。

+0

請參閱我的編輯。 – vfsoraki