Skip to main content
認証やセッションの維持に使用される Cookie は、属性を設定することで保護できます。Auth0 では、次の用途で Cookie を使用します。
  • 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 に保存できません
これらの変更の目的は、セキュリティを向上させ、CSRF 攻撃のリスク軽減に役立てることです。 これらの変更は、次の Cookie に影響します。
  • auth0 (ユーザーのセッションを管理)
  • auth0-mf ( に関連する情報を管理)
  • did (デバイス/ユーザーエージェントの識別子)
これらの Cookie に対して、Auth0 は次の対応を行います。
  • SameSite 属性を none に設定し、その Cookie では HTTPS の使用を必須にします (環境に関係なく)
  • レガシーブラウザーが SameSiteNone を設定することをサポートしていない場合に備えて、フォールバック Cookie を設定します。これらのフォールバック Cookie は auth0_compatauth0-mf_compatdid_compat です
以下の図は、新規のやり取りの際に何が起こるかを示しています。エンドユーザーは、これまでアクセスしたことのないページをリクエストします。サーバーは、訪問者が再度アクセスしたときのレンダリング方法を変更し、seen Cookie を設定します。set-cookie header の灰色の部分は、実際の Cookie である key=value です。赤色の部分は Cookie 属性で、ブラウザーがこれを Cookie jar に保存し、後でリクエストに Cookie の key=value ペアを含めるかどうかを判断します。
sameSite Cookie Attributes Fresh Interaction Flow
次の図は、同じブラウジングセッションで同じリクエストを行った場合に何が起こるかを示しています。リクエストは同じサーバーに送られ、Cookie 属性によって seen Cookie の送信が禁止されていないため、その Cookie はリクエストの cookie header に自動的に含まれます。サーバーはこの Cookie を受け取ったことに基づいて、異なるレスポンスを返します。
sameSite Cookie Attributes Cookie Return Interaction flow

影響を受ける機能

以下の表は、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 を設定する必要があります