S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

GitLabのAD(LDAP)連携

GitLabのAD(LDAP)連携でハマったのでメモ。
BitnamiのGitLab(bitnami-gitlab-7.0.0-0-linux-x64-installer.run)をインストールして、以下のサイトを参考に設定してみた。
GitlabでActive Directory(LDAP)認証を使う

認証できない?

存在するユーザーとパスワードを入力しても「Invalid credentials」とおっしゃる。

新しく作成したユーザーだと認証できた!

LDAPにアクセスする認証情報をAdministratorにしてるのがイヤだったので、とりあえずAdministratorをコピーしてLDAP認証用ユーザーを作成した。
gitlab.ymlのLDAP認証情報(bind_dn属性とpassword属性)を作成したLDAP認証用ユーザーにして、ログインもそのユーザーでしてみたらすんなりログインできた!
でも、Administratorや他のユーザーではログインできない…
なんでだろ?と思って、Administratorとコピーしたユーザーを見比べると、
【左】コピー元のAdministrator
【右】コピーしたLDAP認証用ユーザー
 
ユーザーログオン名の有無が異なってる!

LDAP的な違い

LDAPで問い合わせた値を確認すると、LDAP認証用ユーザー(ユーザーログオン名あり)には「userPrincipalName」という属性が追加されいる。

userPrincipalName: ldapuser@<ドメイン名>;

どうもこれを見て認証してるんじゃないか?と推測してみる。

gitlab.ymlのallow_username_or_email_login属性

説明として以下のコメントがある。

# If allow_username_or_email_login is enabled, GitLab will ignore everything
# after the first '@' in the LDAP username submitted by the user on login.
#
# Example:
# - the user enters 'jane.doe@example.com' and 'p@ssw0rd' as LDAP credentials;
# - GitLab queries the LDAP server with 'jane.doe' and 'p@ssw0rd'.
#
# If you are using "uid: 'userPrincipalName'" on ActiveDirectory you need to
# disable this setting, because the userPrincipalName contains an '@'.

ここで「userPrincipalName」について言及してるが、uid属性は「sAMAccountName」としているので、てっきり「sAMAccountName」で認証しているものと思ってた。
実際は「sAMAccountName」はLDAPにアクセスする認証の時しか使ってないんじゃなかろうか…

Windows2000以前のユーザー情報は連携できない

という結論になって、「GitLabにアクセスするユーザーは、AD情報のユーザーログオン名を登録する」という対応としてみる。
いつまでもWindows2000のADの状態にしてんじゃねーよってのは、また別の機会ということで…

RedmineのAD(LADP)連携

ちなみに同じくBitnamiのRedmine(2.3.3-1)でもAD(LADP)連携してるけど、そっちはRedmineGUIで設定してすんなり連携できている。



最近Windows2000以前のAD絡みで引っかかってるなw