return_urlだけでもリプレイ攻撃が防げるのかー
OpenID認証トランザクションの開始時にConsumer側でnonceを発行して、ユーザーのCookieやSessionデータ、あるいはreturn_urlに付与しておきつつ、自前でDBに格納しておく。
OpenIDとリプレイ攻撃 - Yet Another Hackadelic
cookie無効のUAでも使えるようにするため、return_urlだけでリプレイ攻撃を防ぎたい。リファラ漏洩に弱いのは承知の上。話を分かりやすくするためOpenID Authentication 1.1で考える。
openid.return_toを「foo?nonce=var」とした場合、IdPからのリダイレクト後には「nonce」と「openid.return_to」パラメータの値がそれぞれ「var」「foo?nonce=var」となる。よってnonceの存在チェックもできるし、check_authenticationも成功する。やったね。
これだけのことを理解するのに数時間かかったのが切ない。