Posts: 33
こんにちは。お世話になります。
こちらのOpenIDモジュールを試験的に導入していろいろ試していますが質問させてください。
mixiのOpenIDをテストしてadminアカウントに紐づけたのですが、管理画面の「登録されているOpenID」から該当のアカウントを削除しようとしたところ、確認画面が表示され、「database delete success」と表示されましたが、一覧から該当のOpenIDが削除できません。
何度かOpenIDのテストをしたいので、OpenIDの接続情報を削除したいのですが、この方法は違いますでしょうか。
#ディスカスのほうにうまく接続できず、フォーラムに書かせていただきました。
よろしくお願いします。
Posts: 33
むー・・なぜ他サイトの宣伝が・・・・!?
From: 愛知県
Posts: 4871
micch さん、こんにちは。
すみません。宣伝(スパム)のせいで、見逃してしまっていました。 
ソースを追って確認してみます。
# スパム投稿は削除しておきました。
From: 愛知県
Posts: 4871
2010-2-4 22:58 現在の SVN 最新版で試してみたところ、問題なくレコードは削除できました。 
できるなら SVN 最新版で試してみてください。
Posts: 33
nao-ponさん
ご返答ありがとうございます。
早速上記のSVN最新版をアップデートしてみたのですが、やはり削除できませんでした。
削除の操作をしてphpmysqladminでレコードを確認しましたが、しっかり残っていました。 
ためしにYahooのオープンIDでも別のユーザー名にひもづけて試してみましたがやはりそちらも削除できません。
※先日はmixiで試しました。
mixiもyahooも認証はうまくいきます。
アップデートは古いファイルも最新版もバージョンは0.26で間違いないでしょうか?バージョンが同じのでいいのですよね?
いったんサーバー上のファイルを削除して最新版をアップしなおしました。
サーバーの環境は
さくらインターネット
PHP 5.2.12 CGI版
MySQL 5.1
になります。
よろしくお願いします。
Posts: 33
追記です。
1点気になる点として、削除の確認画面で
Delete this record.
claimed_id = httpsmeyahoocojpalm〜(省略)
と表示され、":""/"などが表示されていません。
ソースをみると、
<input name="claimed_id" id="legacy_xoopsform_claimed_id" type="hidden" value="httpsmeyahoocojpalm〜(省略)" />
となっており、value値が正しく渡されていないのでしょうか?
From: 愛知県
Posts: 4871
":""/"などが表示されていません。
これは完全にそれが原因ですね。ただ、なぜそのようになるのかが不思議です。 
何かのフィルターが掛かっているようですが・・・なんだろう。 
Posts: 33
なんでしょうね・・・
ちなみに「登録されているOpenID一覧」の削除リンクから渡されているURLは、
XOOPS_URL/modules/openid/admin/index.php?controller=identifier&op=delete&claimed_id=https%3A%2F%2Fme.yahoo.co.jp%2Fa%2Flm〜(省略)
と、":""/"がエンコードされて渡されているようなので、渡された先のindex.phpで表示された際に":""/"が抜けてしまっているようです。
暫定的な削除方法としてphpmysqladminで直接Openidのレコードを削除しても問題ないでしょうか?
From: 愛知県
Posts: 4871
micch さん、返信が遅くなりすみません。
暫定的な削除方法としてphpmysqladminで直接Openidのレコードを削除しても問題ないでしょうか?
ソースを追って確認してみましたが、それで問題ないと思います。ただ、念のためバックアップを取っておき、復旧できるようにしてからお試しください。 
":" と "/" が欠落する原因は分からないのですが、class/context.php の 78行目
78 | |
をコメントアウト
78 | |
すると結果はどうでしょうか。
Posts: 33
nao-ponさん
micch さん、返信が遅くなりすみません。
とんでもないです。お返事ありがとうございます。
さて、教えていただいた方法を試してみたのですが、
結果は現象に変化がなく、削除もできませんでした。 
URLをいじるmod_rewriteなどの影響も考えたのですが、xpwikiでURL末尾を60.htmlなどのようにする.htaccessくらいしか設定していないと思います。.htaccessは/modules/xpwiki/以下に配置してますので影響はないと思います。
他に使っているプラグインは、
xoops_blockプラグイン
XoopsUsersプラグイン
user_uname2nameプラグイン
です。関係ないかもしれませんが。
Posts: 33
nao-ponさん、こんばんわ。
本件ですが、原因が分かりました!
protectorモジュールで「ID風変数の強制変換」設定を「はい」にしていたのが原因でした。
「いいえ」に設定したところ削除できました。
ただ、「ID風変数の強制変換」設定を「はい」にしておきたいのですが、「はい」設定で運用して、OpenIDアカウントを編集する場合だけ「いいえ」とすることで問題ないでしょうか。
「いいえ」のままでもOpenIDから新規登録などは動作できているようです。
追記:
お返事を待ってと思いましたが、取り急ぎご対応いただきました御礼までと思い追記です。上記の対応で先にOpenIDを導入しようと思います。ありがとうございました!
From: 愛知県
Posts: 4871
ソースを確認して、影響範囲を確認した上で返答しようと思っていたのですが、なかなか時間が取れないので、とりあえずの返答です。
protector の設定でそのようなものがありましたね。忘れていました。
確か、末尾の2文字が "id" で終わるフォームパラメーターは、正規化される( [^0-9a-zA-Z_-] -> '' だったかな?)ので、根本的な対策は、末尾を 'id' で終わらないようにしたほうがいいですね。
軽くソース内を検索したところ、影響範囲が結構広いのでじっくりと落ち着いて修正する必要がありそうです。
とりあえず、実働上問題なければその対応でいいと思いますが、思わぬところで値が渡らない可能性もあります。
まあ、登録・ログインができれば、運用上は問題ないかもしれません。
Posts: 33
ソースを確認して、影響範囲を確認した上で返答しようと思っていたのですが、なかなか時間が取れないので、とりあえずの返答です。
ご返答を急かしてしまったようですいませんでした。
質問しておきながら、自己解決してしまって書き込んだものの、ご対応いただいたお礼を忘れてしまったと思い追記をさせていただきました。
protectorの対応まで問題がなければ現状で運用しようと思います。
よろしくお願いします 