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! JAPANOpenID 認証サーバとのアソシエーション確立で受け取ったエラーレスポンス。

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 ってのがそもそもありえない。