state,nonceの保存場所
OAuthやOIDCを調べていてstate,nonceの保存場所について疑問が出てきたので質問させていただきます。
最初にstate,nonceのフォーマットについて調べていたところ、こちらの「Google nonce max length」という質問の回答で下記の回答がありました。(一部抜粋)
That being said I started digging around in the RFC for OAuth and the only mention I found worth wild would be the following. (My experience with the Google Oauth team says that they like to follow the RFC guidelines as they are accepted industry standard.)
15.5.2. Nonce Implementation Notes The nonce parameter value needs to include per-session state and be unguessable to attackers. One method to achieve this for Web Server Clients is to store a cryptographically random value as an HttpOnly session cookie and use a cryptographic hash of the value as the nonce parameter. In that case, the nonce in the returned ID Token is compared to the hash of the session cookie to detect ID Token replay by third parties. A related method applicable to JavaScript Clients is to store the cryptographically random value in HTML5 local storage and use a cryptographic hash of this value.
The fact that they suggest storing it in a session cookie would then lead to the max limit being at the very least the max size of a session cookie which would give us something like this.
上記回答ではRFCの資料でsession cookie
で保存することを提案しているので制限がセッションクッキーの最大サイズになると書いてあります。画像は各ブラウザのクッキーの最大サイズなのでセッションクッキーとは別物だと思います。
セッションクッキーはブラウザ側のクッキーにセッションのIDのみを保存して値はサーバー側にセッション変数として保存するもとだと解釈しています。(セッション Cookie の概念)
その解釈で進めるとstate,nonceはセッション変数としてデータベースもしくはキャッシュ(Redisなど)に保存されるので回答の画像にあるブラウザのクッキーの最大サイズに依存しないと思います。
それともクッキーにセッションのIDと共にstate,nonceも入れてブラウザが保持するのでブラウザのクッキーの最大サイズに依存するのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/28 11:39
2022/12/29 01:31
2023/01/26 16:14 編集