GitLab(VM上のUbuntu 14.04 AMD64にインストールされているバージョン7.12.2、Omnibusセットアップ)を使用してLDAP認証をセットアップしようとしています。 gitlab.rbファイルを次のように編集しました。
gitlab_Rails['ldap_enabled'] = true
gitlab_Rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
Host: '********'
port: 389
uid: 'sAMAccountName'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'CN=********,OU=********,OU=********,DC=********,DC=***'
password: '********'
active_directory: true
allow_username_or_email_login: false
block_auto_created_users: false
base: 'DC=********,DC=***'
user_filter: ''
EOS
これにより、「資格情報が無効なため、Ldapmainからユーザーを認証できませんでした」という恐ろしい結果になります。エラー。ユーザー名(bind_dn変数内)について、「[email protected]」(ユーザー名に基づくメール)、「John Smith」(フルネーム)、および「johnsmith」(ユーザー名)を試しました。結果は常に同じです。パスワードに@記号が含まれています。脱出する必要があるかどうか、またはどうやって脱出するのかわかりません。
ログはこれを示しています:
Started POST "/users/auth/ldapmain/callback" for 127.0.0.1 at 2015-07-22 17:15:01 -0400
Processing by OmniauthCallbacksController#failure as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "username"=>"********", "password"=>"[FILTERED]"}
Redirected to http://192.168.56.102/users/sign_in
Completed 302 Found in 14ms (ActiveRecord: 3.6ms)
Started GET "/users/sign_in" for 127.0.0.1 at 2015-07-22 17:15:01 -0400
Processing by SessionsController#new as HTML
Completed 200 OK in 20ms (Views: 8.3ms | ActiveRecord: 2.9ms)
そしてgitlab-rake gitlab:ldap:check
はこれを示しています:
Checking LDAP ...
LDAP users with access to your GitLab server (only showing the first 100 results)
Server: ldapmain
Checking LDAP ... Finished
しかし、Ubuntuのldapsearchを使用すると、VM(そう同じ環境))、たくさんの結果が得られます。
ldapsearch -x -h ******** -D "********@********.***" -W -b "OU=********,OU=********,DC=********,DC=***" -s sub "(cn=*)" cn mail sn dn
奇妙なことに、結果のDNは次のようになります。
dn: CN=John Smith,OU=********,OU=********,OU=********,DC=********,DC=***
つまり、そこに追加のOUがあります。また、ldapsearchコマンドには-s sub
、これはサブグループを検索することを意味すると思います。 LDAPやActive Directoryの詳細については、あまり詳しくありません。
だから私は自分の基地に何かが足りないのだと思いますが、私は何がわかりません。また、ユーザーフィルターの問題である可能性もあります。私はこれまでのところ必要なグーグルを実行しましたが、今はアイデアと解決策がありません。
私は多くの異なる試みの後にこれを解決することができました。いくつかのメモ:
これが最終的なYAMLです。
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'Active Directory'
Host: 'ad-server.example.com'
port: 389
uid: 'sAMAccountName'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: '[email protected]'
password: 'password'
active_directory: true
allow_username_or_email_login: false
block_auto_created_users: false
base: 'OU=ABC,OU=XYZ,DC=example,DC=com'
user_filter: ''