2013-09-24 101 views
11

我想用gitlab配置LDAP認證。我的配置是成才這樣的:如何調試Gitlab LDAP身份驗證?

ldap: 
    enabled: true 
    host: 'ldap.example.com' 
    base: 'ou=People,o=example.com' 
    port: 636 
    uid: 'uid' 
    method: 'ssl' # "ssl" or "plain" 
    bind_dn: 'cn=gitlab,ou=Apps,o=example.com' 
    password: 'password' 
    allow_username_or_email_login: true 

我用下面的測試吧:

ldapsearch -b "ou=People,o=example.com" -s sub -D "cn=gitlab,ou=Apps,o=example.com" -H ldaps://ldap.example.com:636 -w "password" -x "([email protected])" 

上述工程的線,但是當我嘗試登錄使用LDAP,我總是得到「無效憑證」。

如何解決這個問題並縮小問題的根本原因?

編輯26/09:

這裏有一些事情我就production.log發現:

Started GET "https://stackoverflow.com/users/sign_in" for 127.0.0.1 at 2013-09-23 17:42:58 -0300 
Processing by Devise::SessionsController#new as HTML 
    Rendered devise/sessions/_new_ldap.html.haml (1.7ms) 
    Rendered devise/sessions/_new_base.html.haml (1.8ms) 
    Rendered devise/sessions/_oauth_providers.html.haml (0.0ms) 
    Rendered devise/sessions/new.html.haml within layouts/devise (4.2ms) 
    Rendered layouts/_head.html.haml (1.6ms) 
    Rendered layouts/_flash.html.haml (0.1ms) 
Completed 200 OK in 9ms (Views: 6.9ms | ActiveRecord: 0.0ms) 
Started POST "https://stackoverflow.com/users/auth/ldap/callback" for 127.0.0.1 at 2013-09-23 17:43:00 -0300 
Processing by OmniauthCallbacksController#failure as HTML 
    Parameters: {"utf8"=>"â", "authenticity_token"=>"AwqZsVHRqOeZr+GLWWeGM7MyOAdk7cFl8/rZgbVRU+8=", "username"=>"[email protected]", "password"=>"[FILTERED]"} 
Redirected to http://example.com/users/sign_in 
Completed 302 Found in 3ms (ActiveRecord: 0.0ms) 
Started GET "https://stackoverflow.com/users/sign_in" for 127.0.0.1 at 2013-09-23 17:43:00 -0300 
Processing by Devise::SessionsController#new as HTML 
    Rendered devise/sessions/_new_base.html.haml (2.8ms) 
    Rendered devise/sessions/_oauth_providers.html.haml (0.1ms) 
    Rendered devise/sessions/new.html.haml within layouts/devise (3.7ms) 
    Rendered layouts/_head.html.haml (1.7ms) 
    Rendered layouts/_flash.html.haml (0.1ms) 
Completed 200 OK in 9ms (Views: 6.6ms | ActiveRecord: 0.0ms) 
Started GET "/" for 127.0.0.1 at 2013-09-23 18:50:08 -0300 
Processing by DashboardController#show as HTML 
Completed 401 Unauthorized in 1ms 

編輯:我終於得到了答案:在設計一個配置被剝離後的everyting「@ 」。我不記得確切的名字,但我可以儘快發佈到機器上。我通過向ldap oauth登錄添加日誌來發現此問題。

+0

從提供服務器的訪問日誌開始。該日誌包含每個操作請求和結果的記錄以及BIND的詳細信息,但密碼除外。 –

+0

我發現的唯一日誌來自nginx,gitlab_access.log。有沒有那麼多有用的信息(一些請求/響應,沒有綁定的細節) –

+0

客戶端使用哪個LDAP服務器? –

回答

6

OP kidbombmentions

的配置上色器件是剝離一切後, 「@
我通過向ldap oauth登錄添加日誌來發現此問題。


檢查LDAP服務器也通過ldap(不ldaps://)訪問

ldapsearch -b "ou=People,o=example.com" -s sub -D "cn=gitlab,ou=Apps,o=example.com" -H ldap://ldap.example.com:389 -w "password" -x "([email protected])" 

如果是,嘗試從 'SSL' 爲 「plain」 修改gitlab.yml設置文件ldap.method

目標是驗證用於聯繫ldap服務器的證書是否存在問題。

如果您可以通過ldap://(無證書)聯繫服務器,那至少可以解決您的問題。

如果不是(您必須經過ldaps://),您需要詳細研究與LDAP服務器關聯的證書。

openssl s_client -connect ldap.example.com:636 2>/dev/null < /dev/null 

(我不使用-CAFile-CAPath這裏,假設CA在其默認位置在/etc/ssl/openssl.cnf提到)

如果你在該命令的消息的輸出的結尾:

error:num=21:unable to verify the first certificate 

這意味着您需要從發行人處獲得證書。
請參閱「How To Verify SSL Certificate From A Shell Prompt」。

0

我們配置了使用LDAP憑證的gitlabs,但每當有人登錄時,我們就會收到「500 Internal Server Error」消息。然而,當我們正確格式化/etc/gitlab/gitlab.rb時,問題似乎消失了。看起來有不同的方式來格式化ldap變量,具體取決於您使用的gitlabs版本:7.3.2.omnibusmaster

0

我看到你找到了你的方案的解決方案,但我想我會爲其他遇到GitLab & LDAP的驗證問題的其他人排除其他故障排除步驟。

  • 運行GitLab的LDAP rake檢查來本地化問題。 https://docs.gitlab.com/ce/administration/raketasks/ldap.html#check。還有一個更全面的列出您正在使用的GitLab安裝文檔。
  • 如果使用SELinux,請將其設置爲寬容模式。
  • 如果在GitLab中使用Apache:安裝LDAP - Apache Directory Studio 並嘗試建立連接。如果你不能,那麼你的config.yml文件中可能有錯誤 。我首先看 基地。
  • 運行tcpdump並將.pcap文件導入到WireShark中進行查看。
  • 查看您的LDAP服務器和您的GitLab服務器上的日誌