フォーラム: ヘルプ (スレッド #17222)

LdapPlugin で email、name が DB に行きません (2007-12-28 14:51 by mshibata #34244)

柴田@島津製作所と申します。
ほかに書き込みがないので、そもそもここに質問を投げてよいものかどうかわかりませんが、ほかの媒体でご連絡した方がよければその旨お知らせください。

題記の現象ですが、LdapPlugin の api.py 74 行目
self._ldap = LdapConnection(self.env.log, False, **self._ldapcfg)
...で Ldap の DS に接続できていないような気がします。その後の get_attribute() で値が返ってきません。

ほかのところの LdapConnection() では、権限 tracperm などは返ってきているようでしたので、その周辺のコードに習って
bind = self.config.getbool('ldap', 'store_bind')
self._ldap = LdapConnection(self.env.log, bind, **self._ldapcfg)
...とすると値が返ってくるようになりました。

何か設定とかでまずいところがあるのでしょうか?

当方 python 使いではありませんので、周辺のデバッグのログを出力している行を真似て、変数に何が代入されたか追いかけた程度でよくわかっていないところがあります。

頓珍漢な質問でしたらご容赦ください。

RE: LdapPlugin で email、name が DB に行きません (2008-03-09 08:19 by okamototk #35485)

ご報告ありがとうございます。

LdapPluginは認証が不要な環境でした動作確認していませんでした。認証が必要な環境ですとバインドが必要になります。

コメントをもとに修正しました。よろしくお願いいたします。
#34244 への返信

RE: LdapPlugin で email、name が DB に行きません (2008-03-12 10:43 by mshibata #35529)

> コメントをもとに修正しました。よろしくお願いいたします。

ご対応いただいた時期からすると、こちらがさっさと改造版をアップできたらよかったみたいですね。SVN への SSH が通らずかなり時間を使ってしまいました。

改造内容については、別スレッドの記事の方にまとめて書きましたので、そちらをご参照ください。

本件修正していただいただけの状態では、こちらはテストしたことはないのですが、原理的に session テーブルにアカウント情報がセットできていればこれで所望の動作をすると思います。

ただ以前にこの質問をさせていただいたときには、これで動いたと思ったのですが、TracLightning に入れなおして再度試したら条件が違うのか、一向に session テーブルにアカウント情報が入りませんでした。前提が崩れました。つまり session_attribute に所定の情報は書き込まれませんでした。

以前はお試しだったのですが、今回は一からインストールする手順の確認をしている最中に発生していますので、条件的には今回の方がクリーンですし、以前はどこかに LDAP 以降前の認証情報を握っているところがあって、それがあると session に書き込まれるなどの動作をしていたのかなと... まったく根拠のない推測です。(自分の不注意さのレベルからするとやりそうなことという意味です。)

それから別スレッドの方には書かなかったのですが、Trac ヘッダのログインリンクをクリックすると、一度 authenticate 関数に来るのですが、そのときは anonymous なので、一旦関数の頭の判定で return し、その後認証画面が出ます。...でログインすると今度は authenticate 関数に戻ってきませんでしたので、実はこのコードの正しさとは別に、そもそも呼ばれないという現象に遭遇してます。

Trac は Apache 側の認証によってアカウントそのまま中に入れるシステムですので、確かに2回目に authenticate 関数を通る必要はなさそうですし、以前は一種の不具合で2回目も通過 (しても支障ないし) してたみたいな話があったのかも知れないと思っています。
#34244 への返信