ITPとブラウザーの動作
ITPを有効にすると、ブラウザーはサードパーティのCookieが無効化されているように動作します。そのため、ユーザーに何も表示することなく新しいトークンを取得することが不可能になります。これは、 Connect(OIDC)がSPAでセッションを処理するためにiframeを使用する方法に似ています。 SPA SDK(推奨)にあるgetTokenSilently
は、リフレッシュトークンのローテーションを使用するようにSDKを構成しない限り、サイレント認証を行います。
回避策
ブラウザーに最近加わった新しいプライバシー保護機能は、サードパーティクッキーへのアクセスを妨げるため、ユーザーエクスペリエンスに悪影響を与えています。リフレッシュトークンのローテーションを代わりに使用することもできます。リフレッシュトークンのローテーションは、SPAでリフレッシュトークンを安全に使用するためのセキュリティ方式であり、リソースにアクセスするエンドユーザーに、ITPのようなブラウザーのプライバシー保護技術に煩わされないシームレスなユーザーエクスペリエンスを提供します。 また、ITPによって引き起こされる問題を回避するために、Auth0のカスタムドメイン機能を使用することができます。これは特に、そのカスタムドメインがアプリケーションのWebサイトドメインのサブドメインにある場合は有効です。たとえば、お使いのアプリケーションが example.com でホストされている場合、カスタムドメインは subdomain.example.com の形式である必要があります。ITPのデバッグモード
Safari Technology Previewにある[Intelligent Tracking Prevention Debug Mode(インテリジェントトラッキング防止機能のデバッグモード)]は、ITPの問題を解消するために使用することができます。ITPをデバッグする方法については、こちらのWebKitブログ記事を参照してください。 注意 :この説明には、テスト目的で、カスタムドメインに追跡機能があると永続的に分類する方法が記載されています。しかし、新しいバージョンのSafari Technology Previewでは、この設定のためにUser Defaultsを保管するためのドメインが、com.apple.SafariTechnologyPreview
からcom.apple.WebKit.Networking
に変更されています。手順で説明されているコマンドに問題がある場合には、以下を試してみてください。
- サイトに追跡機能があると分類する:
defaults write com.apple.WebKit.Networking ResourceLoadStatisticsManualPrevalentResource example.com
- 設定を検査する:
defaults read com.apple.WebKit.Networking ResourceLoadStatisticsManualPrevalentResource
- 設定を削除する:
defaults delete com.apple.WebKit.Networking ResourceLoadStatisticsManualPrevalentResource