form_postを使用する OIDC Enterprise- 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 ヘッダーの灰色の部分は、実際の Cookie key=value. です。赤色の部分は、後でリクエストに Cookie の key+value ペアを含めるかどうかを判断するために、ブラウザが Cookie jar に保存する Cookie 属性です。


影響を受ける機能
SameSite 属性の変更がアプリにどのような影響を及ぼす可能性があるかを示しています。
セッションを使用するウェブアプリ (たとえば、ユーザー設定やショッピングカートなどを保存するもの) を利用していて、さらに Google、GitHub、Auth0 などの を使ったサインインをユーザーに許可している場合、その機能は Cookie に依存しています。ブラウザにおける Cookie の動作変更によって、ユーザー体験が損なわれる可能性があります。たとえば Google Chrome は、この変更を最初に導入したブラウザベンダーであり、その変更はウェブアプリケーションと互換性がない可能性があります。
Google Chrome と Microsoft Edge では、
SameSite を未定義に設定した場合の仕様が変更され、SameSite のデフォルト値が none ではなく lax になったことに気付くかもしれません。
たとえば、新しい UI を構築し、Auth0 ゲートウェイ経由でプロキシする複数のサービスがあるとします。このゲートウェイで Cookie セッションを作成している場合、クロスオリジンリクエストを行うと、JavaScript コンソールに次の警告が表示されることがあります。
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に対しても例外を設けない点に注意してください) - Cookie の
SameSite属性がNoneの場合は、その Cookie を secure に設定します。そうしないと、ブラウザーに拒否されます。コールバック URL に HTTP を使用している場合、そのような Cookie を認可リクエストの state/ の関連付けに使うと、動作しなくなります。したがって、HTTPS を使用するか、SameSite=laxを設定する必要があります