m5knt

底が浅い男がなんとはなしに...

Redmine のプラグイン redmine_ldap_sync が QNAP の LDAP と 同期できないにょろ

Redmine のユーザ認証を LDAP にしたりはデフォルトでも出来るのですがグループ情報は持ってこれないので redmine_ldap_sync を今回利用してみました。 ユーザ作成とかグループ作成とか出来るみたいで設定を進めていったんですが意外に引っかかったので避け方をちょっとまとめてみました。

LDAPアトリビュート設定

login attribute -- uid
firstname attribute -- givenName
lastname attribute -- sN
email attribute -- mail

実行結果

bundle exec rake redmine:plugins:ldap_sync:sync_all RAILS_ENV=production
Synchronizing 'ldap.baz.jp' groups...
   -> Ldap sync is disabled: skipping
Synchronizing 'ldap.baz.jp' users...
   -> Ldap sync is disabled: skipping

サーバ設定の enable と disable 逆じゃね?ってな結果が帰ってくるので disable にしてもっかいやってみます

実行結果

bundle exec rake redmine:plugins:ldap_sync:sync_all RAILS_ENV=production
-- Could not create user 'foo-bar': "First name can't be blank"

First name がないよってことでユーザー登録がはじかれます、QNAP の LDAP でユーザ登録するとき苗字と名前を登録するところはありません、じゃあどうなっているかと LDAP 内をのぞくと givenName は存在しない sN は uid と同じ値でした、まあ QNAP の LDAP に givenName sN いれてもいいんですが、アトリビュート名を指定するだけでどうにかなりそうなので合わせてみます。

LDAPアトリビュート設定

login attribute -- uid
firstname attribute -- uid
lastname attribute -- uid
email attribute -- mail

実行結果

bundle exec rake redmine:plugins:ldap_sync:sync_all RAILS_ENV=production
Could not create user 'foo-bar': "Last name can't be blank"

今度は Last name がねーよってまたはじかれます、どうも redmine_ldap_sync のソースを見ると肝心な内部処理がアトリビュート名からアカウント作成用のキー名を引いている為に同じ名前を指定することが出来ません、普通処理逆に書くと思うんですが直そうにも ruby 力が無いので設定で回避しちゃいます。

力が無いなら無いなりの戦い方で必殺 print 差し込んで確認すると login attribute はキー名引きの処理に含まれてませんそれなら lastname だけ sN 使えば回避できそうです。

LDAPアトリビュート設定

login attribute -- uid  <- foo-bar
firstname attribute -- uid <- foo-bar
lastname attribute -- sN <- foo-bar
email attribute -- mail <- foo-bar@baz.jp

実行結果

bundle exec rake redmine:plugins:ldap_sync:sync_all RAILS_ENV=production
Creating user 'foo-bar'...

登録された結果は

login -- foo-bar
first name -- foo-bar
last name -- foo
email -- foo-bar@baz.jp

:( 期待では last name も foo-bar なんですが...

ユーザが同期できたんで次はグル-プってことで、全部登録されたら困るので小文字だけを指定してみましたら

group name pattern -- [a-z][a-z_0-9]+

Domain Users とか登録されちゃいます 大文字小文字が分けられてなく ^$ でくくる必要があるみたいでした

まとめ

redmine_ldap_sync

  • サーバの enable disable は状態ではなく操作
  • グループネームパターンは大文字小文字区別なし正規表現検索
  • last name はサニタイズのような処理がある

QNAP 周り

  • first name attribute は uid を指定する
  • 我慢して QNAP LDAP を使う必要が無ければ別サーバの方がよさげ

自分の為というよりは未来の引継ぎ者への英語アレルギー対策ちゅう所ですのん