Yahoo! JAPAN の OpenID 認証にバグないですか?
アソシエーション確立のときに、Yahoo! JAPAN は、assoc_type が HMAC-SHA1 でないとダメみたいなのですよ。assoc_type は仕様上、HMAC-SHA1 か HMAC-SHA256 のどちらかなんですけどね。
それで、RP のほうから assoc_type は HMAC-SHA256 でいきましょうとリクエストなげると、「サポートしてないよ!」ってエラーレスポンスが返ってくるんです。それで、なんだったらサポートしてるのかをレスポンスに載せるのは、OpenID の仕様上「オプション」なんですが、さすが天下の Yahoo! JAPAN。ちゃんと、オプション項目も載せてきます。
ところが!
このとき、assoc_type の項目の値と session_type の項目の値が逆みたいなんですよ。だから Yahoo! JAPAN のエラーレスポンスを真に受けると次のリクエストも失敗しちゃうんです!
ひどくないとしたら、仕様を読み間違えている私の頭がひどい。
とりあえず OpenID4Java さん、疑ってごめんなさい。
17:48 追記
証拠。さっき Yahoo! JAPAN の OpenID 認証サーバとのアソシエーション確立で受け取ったエラーレスポンス。
ns:http://specs.openid.net/auth/2.0 mode:error error:assoc_type not supported error_code:unsupported-type session_type:HMAC-SHA1 assoc_type:no-encryption
仕様によると
8.4. Association Session Types
OpenID Authentication defines three valid association session types: "no-encryption", "DH-SHA1", and "DH-SHA256".
Final: OpenID Authentication 2.0 - Final
なので、session_type に HMAC-SHA1 ってのがそもそもありえない。