- OIDC Enterprise の
form_post - HTTP-POST バインディング
- Web メッセージ (
checkSessionとも呼ばれます)
SameSite 属性
set-cookie HTTP レスポンスヘッダーに SameSite Cookie 属性を追加できます。これにより、HTTP リクエストを引き起こした操作の種類に応じて、ブラウザーが Cookie の key=value ペアを送信しないようにできる場合があります。
使用できる属性値は次のとおりです。
見覚えのある Cookie 属性には、次のようなものがあります。
ブラウザーはこれを受け取るとヘッダーを解析し、それに応じて Cookie jar を更新します。
2020年2月以降、Google Chrome v80 では Cookie の扱い方が変更されました。これに伴い、Auth0 でも Cookie の扱いに関して次の変更を実装しました。
SameSite属性が設定されていない Cookie は、laxに設定されますSameSite=noneが設定された Cookie は保護されている必要があります。保護されていない場合、ブラウザーの Cookie jar に保存できません
auth0(ユーザーのセッションを管理)auth0-mf( に関連する情報を管理)did(デバイス/ユーザーエージェントの識別子)
SameSite属性をnoneに設定し、その Cookie では HTTPS の使用を必須にします (環境に関係なく)- レガシーブラウザーが
SameSiteにNoneを設定することをサポートしていない場合に備えて、フォールバック Cookie を設定します。これらのフォールバック Cookie はauth0_compat、auth0-mf_compat、did_compatです
set-cookie header の灰色の部分は、実際の Cookie である key=value です。赤色の部分は Cookie 属性で、ブラウザーがこれを Cookie jar に保存し、後でリクエストに Cookie の key=value ペアを含めるかどうかを判断します。


影響を受ける機能
SameSite 属性の変更がアプリにどのような影響を及ぼすかを示しています。
セッションを使用する Web アプリケーション (たとえば、ユーザー設定やショッピングカートなどを保存するもの) を利用していて、ユーザーが Google、GitHub、Auth0 などの を使ってサインインできるようにしている場合、その機能は Cookie に依存しています。ブラウザーの Cookie の挙動変更によって、ユーザーエクスペリエンスが損なわれる可能性があります。たとえば Google Chrome は、この変更を最初に展開したブラウザーベンダーであり、Web アプリケーションと互換性がなくなる可能性があります。
Google Chrome と Microsoft Edge では、
SameSite を未定義にした場合の仕様が変更され、SameSite の既定値は none ではなく lax になっています。
たとえば、新しい UI を構築し、Auth0 ゲートウェイ経由でプロキシする複数のサービスがあるとします。このゲートウェイで Cookie セッションを作成している場合、クロスオリジンの request を行うと、Javascript コンソールに次の warning が表示されることがあります。
A cookie associated with a cross-site resource (URL) was set without the SameSite attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with SameSite=None and Secure. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032
必要な対応
- 非対応ブラウザーの一覧を確認してください。
- Auth0 とのやり取りで
response_mode=form_postを使用している場合は、アプリケーションがSameSite=noneを使用するよう設定してください (Chrome ではlocalhostであっても例外はありません) 。 SameSite属性がNoneの場合は、Cookieを secure に設定してください。そうしないと、ブラウザーに拒否されます。コールバック URL に HTTP を使用している場合、認可リクエストの state/ の関連付けにそのような Cookie を使用すると、動作しなくなります。そのため、HTTPS を使用するか、SameSite=laxを設定する必要があります