Redmine のプラグイン redmine_ldap_sync が QNAP の LDAP と 同期できないにょろ
Redmine のユーザ認証を LDAP にしたりはデフォルトでも出来るのですがグループ情報は持ってこれないので redmine_ldap_sync を今回利用してみました。 ユーザ作成とかグループ作成とか出来るみたいで設定を進めていったんですが意外に引っかかったので避け方をちょっとまとめてみました。
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 いれてもいいんですが、アトリビュート名を指定するだけでどうにかなりそうなので合わせてみます。
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 使えば回避できそうです。
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
とか登録されちゃいます 大文字小文字が分けられてなく ^$
でくくる必要があるみたいでした
まとめ
QNAP 周り
- first name attribute は uid を指定する
- 我慢して QNAP LDAP を使う必要が無ければ別サーバの方がよさげ
自分の為というよりは未来の引継ぎ者への英語アレルギー対策ちゅう所ですのん