Skip to main content
匿名セッションを使用すると、認証なしでユーザーセッションを作成・管理できます。 ユーザーは、アカウントを作成する前に、閲覧、カートやほしいものリストへの商品の追加、購入の完了、設定の指定を行えます。サインアップまたはログインすると、それまでのアクティビティが認証済みプロファイルに引き継がれます。 匿名セッションは、Auth0 Identity Conversion Suiteの一部です。 匿名セッションは、次のユースケースで使用できます。
  • ページの読み込みやセッションをまたいでゲストユーザーを追跡する
  • ショッピングカートの参照情報、設定、同意、プロファイリング情報などのメタデータを保存する
  • 認証なしでAPI呼び出し用のアクセストークンを発行する
  • ユーザーがサインアップまたはログインした際に、匿名でのアクティビティを認証済みアカウントに移行する
Auth0の匿名セッションのメタデータは安全なデータストアではないため、機密情報の保存には使用しないでください。 これには、シークレットや社会保障番号、クレジットカード番号などの高リスクなPIIが含まれます。また、匿名セッションに保存されるデータは真実性や正確性が検証されていないため、鵜呑みにしないでください。Auth0のお客様には、メタデータに保存するデータを評価し、セッションのタグ付けおよびアクセス管理に必要なものだけを保存することを強く推奨します。 詳細については、Auth0 General Data Protection Regulation Complianceをお読みください。

匿名セッションのデータを収集する

まだ認証されていないユーザーも含め、ユーザーに関する情報の収集を開始すると、アプリケーションは /anonymous/token エンドポイントに POST リクエストを送信します。 Auth0 は2つのトークンを返します。 セッショントークンを含む後続の呼び出しでは、同じ user_id のセッションが継続されるため、すべてのアクティビティを単一の起点にたどることができます。 アクセストークンを使用すると、匿名ユーザーは既存の任意の API を呼び出せます。
Anonymous session data of user anon@1234-5678-90

匿名セッションのデータをユーザーの メタデータ に引き継ぐ

匿名セッションを認証済みユーザーへ引き継ぐ仕組みは、利用するフローや、アプリケーションがどのドメイン・FQDN に配置されているかによって異なります。リダイレクト型のフロー (認可コード、PKCE を用いた認可コード) では、Cookie または転送チケットのいずれかを使用します。 匿名セッション中のユーザーがログインまたはサインアップする際、アプリケーションはクッキーを使用して、anonymous_session_tokenを/authorizeエンドポイントに渡します。この仕組みは、アプリケーションと認可サーバーが同じドメインにある場合に機能します。たとえば、アプリケーションがapplication.mydomain.comにあり、認可サーバーのカスタムドメインがauth.mydomain.comである場合です。この場合、クッキーは同一ドメインと見なされ、自動的に認可サーバーへ転送されるため、ログインは通常どおり機能します。
cookie example

転送チケットを使用してセッションを移行する

クッキーをクロスドメインで送信する必要があるシナリオでは、ブラウザーの複数の仕組みによって、匿名セッションクッキーのネットワーク送信がブロックされます。サーバーとクライアントでCORS設定が正しく構成されていても、AppleのIntelligent Tracking Protection (ITP) などの高度な仕組みによってクッキーがブロックまたは破棄され、ユーザーが一致しなくなる場合があります。 これを回避するには、クッキーに依存しない2段階の匿名セッション転送の仕組みを使用します。
  1. urn:auth0:anon_transferオーディエンスを要求して/anonymous/tokenエンドポイントを呼び出し、引き換えにanon_transfer_tokenを受け取ります。
  2. /authorizeの呼び出しにパラメーターとしてanon_transfer_tokenを含めます。
anon_transfer_tokenは、それを要求したIPアドレスに紐付けられます。このクッキーを使用しない仕組みをログインに使用する予定がある場合は、意図しない衝突や注入を避けるため、テナント設定で匿名セッションクッキーの発行を無効にすることをAuth0では推奨しています。 ログインに成功すると、Auth0 では、pre-user-registration および post-login の Actions トリガーで、event.anonymous_session オブジェクトを通じて匿名セッションデータを利用できます。
anonymous session object

リソースオーナーパスワードグラント (ROPG) のシナリオでセッションを移行する

ログインに ROPG を使用する場合は、/oauth/token 呼び出しのリクエストボディに anonymous_session_token を含めます。
Anonymous session token in a ROPG request
Actions を使用した匿名セッションについて詳しくは、匿名セッションのユースケースをご覧ください。

転送後に匿名セッションを終了する

ユーザーが認証されても匿名セッションのクッキーは自動的に破棄されないため、その後のログインでもクッキーが送信され続ける可能性があります。セッションを終了するには、/anonymous/logout エンドポイントを使用します。
Auth0 は匿名セッションに対するサーバー側での無効化を提供していません。セッションをログアウトしても、匿名セッションのクッキーが削除されるだけです。クッキーが削除された後もブラウザーやアプリケーションがトークンを保持している場合、そのトークンは引き続き通常どおり使用できます。 匿名セッションをより細かく制御したい場合は、匿名セッションのクッキーを一切発行しないようにテナントを構成することもできます。

ベストプラクティス

匿名セッションに関するベストプラクティスは以下のとおりです。
  • ユーザーの匿名セッションデータが失われないよう、適切な匿名セッションの有効期間を設定します。Auth0では、30日以上の有効期間を推奨しています。
  • 匿名のanon@ユーザーがAPIで実行できる操作を制限します。
  • トークンを検証し、メタデータをサニタイズします。サーバー側でバリデーションを行わずに、クライアントからのメタデータやトークンを決して信頼しないでください。
  • アクセストークンは有効期限まで再利用できるため、キャッシュします。

制限事項