Native to Web SSO を設定する
Native to Web SSO は、次の SDK をサポートしています: Auth0 Android SDK、Auth0 Swift SDK、および Auth0 React Native SDK。Native to Web SSO は、次のツールでサポートされています: Auth0 Deploy CLI、Auth0 Terraform Provider、および Auth0 CLI。Native to Web SSO は、Resource Owner Password Flow や Authorization Code Flow with Proof Key for Code Exchange など、リフレッシュトークンを返すすべての認証フローをサポートしています。
セッション転送トークン の作成と管理
session_transfer_tokensの作成と管理- Cookie または URL パラメーターを使用して Web ブラウザーでセッションを作成
- IP アドレスまたは ASN を使用して、セッションをユーザーのデバイスに関連付ける
PATCH 呼び出しを行います。新しいアプリケーションを作成するには、Create a Client エンドポイントに対して POST 呼び出しを行います。
ネイティブアプリケーションを設定する
-
を使用してネイティブアプリケーションを更新します。
- Dashboard > Applications に移動します。
- アプリケーションを選択するか、アプリケーションを作成します。
- Settings タブを選択します。
- Session Transfer で Allow Native to Web SSO を有効にします。
- Require Cascade Revocation を選択して、Web アプリケーションのセッションと関連トークンを自動的に失効させます。
- Save を選択してアプリケーションを更新します。

- Management API の を使用して、Update a Client エンドポイントでネイティブアプリケーションを更新します。
- Auth0 CLI を使用して、ネイティブアプリケーションを更新します。
Webアプリケーションを設定する
-
Auth0 Dashboard を使用して Webアプリケーションを更新します。
- Dashboard > Applications に移動します。
- Webアプリケーションを選択するか、新規作成します。
- Settings タブを選択します。
- Session Transfer で、Native to Web SSO Methods を有効にします。
- Cookie Authentication と Query Authentication を選択します。
- Device Binding Method を有効にし、None、ASN Binding、または IP Address Binding のいずれかを選択します。
- セッショントランスファー後に新しいリフレッシュトークンを発行するには、Allow Refresh Token Requests を有効にします。
- Use online refresh tokens を選択します。
- Save を選択して Webアプリケーションを更新します。

- Management API アクセストークンを使用して、Update a Client エンドポイントで Webアプリケーションを更新します。
- Auth0 CLI を使用して、Web アプリケーションを更新します。
Native to Web SSO を実装する
-
クライアントで
allow_refresh_tokenが無効になっている状態でアプリケーションがoffline_accessを要求しても、Auth0 はrefresh_tokenを発行しませんが、認証自体は引き続き機能します。 -
リフレッシュトークンローテーションが有効な場合、Auth0 はトークン交換の呼び出しで新しい
refresh_tokenを返します。リフレッシュトークンの交換は、コードで Web アプリケーションを開く直前に行う必要があります。
ネイティブアプリケーションで
ステップ 1: リフレッシュトークンをセッション転送トークンと交換する
- Swift、Android、または React Native SDK を使用してリフレッシュトークンをセッション転送トークンと交換する:
- Swift SDK
- Android SDK
- React Native SDK
- HTTP を使用してリフレッシュトークンをセッション転送トークンと交換する:
これらのサンプルでは、可変の値にプレースホルダーを使用しています。プレースホルダーは、Auth0 のドメイン、client_id、既存の refresh_token に置き換えてください。
リフレッシュトークンのローテーションが有効な場合、この交換ではリフレッシュトークンも返されます。認証時にIDトークンを要求していた場合、この呼び出しでもIDトークンが返されます。
allowed_authentication_methods に応じて、session_transfer_token を Web アプリケーションに送信する方法は 2 つあります。
WebView またはブラウザーを使用する Web アプリケーションがクッキーの挿入をサポートしている場合は、ネイティブアプリケーションを次のように設定できます。
- session_transfer_token をクッキーに追加します。
- WebView またはブラウザーを使用して Web アプリケーションを開きます。
- Web アプリケーションで、Auth0 テナントまたは にログインします。
session_transfer_tokenがクッキーに含まれているため、ユーザーに第 1 認証要素での認証は求められません。
オプション 2: session_transfer_token を URL パラメーターとして送信する
session_transfer_tokenを URL パラメーターとして追加します。- WebView またはブラウザーで Web アプリケーションを開きます。
/authorizeエンドポイントにsession_transfer_tokenを URL パラメーターとして付加して、Web アプリケーションにログインします。session_transfer_tokenは有効で信頼できるため、Auth0 テナントは第 1 認証要素を要求せずにユーザーを認証します。
ウェブアプリケーションで
セッション転送トークン が Cookie として送信される場合、ブラウザーが
/authorize エンドポイントへのリクエストでその Cookie を送信するため、追加の設定は不要です。オプション 1: Web アプリケーションのリクエストにセッション転送トークン を追加する
session_transfer_token を URL パラメーターとして送信して /authorize エンドポイントにリダイレクトします。
オプション 2: Auth0 SDK を使用する Web アプリケーションにセッション転送トークン を追加する
/authorize エンドポイントへのリクエストに session_transfer_token は含まれません。
以下は、Auth0 SDK を使用する Web アプリケーションで、/authorize エンドポイントへのリクエストに session_transfer_token を追加してリダイレクトする例です:
Node (Express.js)
session_transfer_token をサポートするミドルウェアを追加できます。
javascript
Auth0 SPA SDK (@auth0/auth0-spa-js)
authorizationParams 経由で session_transfer_token を loginWithRedirect() に渡せます。
typescript
Auth0 React SDK (@auth0/auth0-react)
useAuth0 フックの loginWithRedirect を使って session_transfer_token を渡せます。
typescript
SAML と WS-Federation
session_transfer_token を URL パラメーターとして Auth0 の /authorize エンドポイントに送信できます。redirect_uri は、SAML または WS-Fed のサインイン URL です。
組織を使用した Native to Web SSO
Native to Web SSO で組織を使用する場合、Web アプリケーションの
/authorize リクエスト内の organization パラメーターは、セッション転送トークンに関連付けられた組織と一致している必要があります。一致しない場合、認証は失敗し、ユーザーは再度ログインを求められます。- ネイティブアプリケーションで、組織を指定してユーザーを認証します:
javascript
- Web アプリケーションにリダイレクトする際は、
/authorizeリクエストに同じ組織を含めてください。
bash
/authorize リクエスト内の組織がセッション転送トークン内の組織と一致しない場合、セッション転送トークンは拒否され、ユーザーは再認証のためログインページにリダイレクトされます。イベントの説明 “Single Sign-On failed: Session Transfer Token organization mismatch detected.” を含む警告ログが、テナントログに記録されます。
Actions を使用するセッション転送トークン
session_transfer_token を使用すると、認証後のリスク検知と対応機能を構成し、ユーザー保護を強化できます。
これを可能にするために、post-login の Action オブジェクト event.session_transfer_token には、一意の client_id、scope、ip、asn、user_agent などの request 情報や、cityName、countryCode などの geoip 情報をはじめとする関連情報が含まれます。詳細については、Actions Triggers: post-login - Event Object を参照してください。
以下の Action コードでは、地理位置情報に基づいてトランザクションを動的に拒否できます。
javascript
親リフレッシュトークンのメタデータへのアクセス
session_transfer_token から作成された Web セッションに引き継ぐことができます。
Auth0 は、この情報を Post Login Actions の event.session.session_transfer.parent_refresh_token.metadata オブジェクトで公開します。これにより、プラットフォーム間でメタデータを安全かつ標準化された方法で受け渡しできます。
使用例: モバイルアプリでリスクデータ (デバイススコア、位置情報など) を収集し、それをリフレッシュトークンのメタデータに保存します。ネイティブアプリが Native to Web SSO フローを開始すると、そのメタデータは対応する Web セッションで Actions を通じて自動的に利用できるようになります。
javascript
監視
トークン交換ログ
sertft: リフレッシュトークン交換の成功。このログは、audienceフィールドが"audience":"urn:$auth0Domain:session_transfer"の場合、Native から Web への SSO 交換に対応するものですfertft: リフレッシュトークン交換の失敗。このログは、audienceフィールドが"audience": "urn:$auth0Domain:session_transfer"の場合、Native から Web への SSO 交換に対応するものです
セッション転送検証の警告ログ
/authorize リクエスト中にセッション転送トークンの検証が失敗すると、警告ログ (w) を出力します。これらのログは、Native to Web SSO の問題のトラブルシューティングに役立ちます。
| イベントの説明 | 原因 |
|---|---|
Single Sign-On failed: Session Transfer Token not found or expired. This may indicate token reuse or expiration. | セッション転送トークンが見つからない、すでに使用されている、または有効期限が切れています (トークンは 1 回限り有効で、有効期間は 1 分です) 。 |
Single Sign-On failed: Session Transfer Token device binding validation failed due to IP/ASN mismatch. | Web リクエストの IP アドレスまたは ASN が、セッション転送トークンに設定されたデバイスバインディングと一致していません。 |
Single Sign-On failed: Session Transfer Token organization mismatch detected. | /authorize リクエストの organization パラメーターが、セッション転送トークン内の組織と一致していません。 |
Single Sign-On failed: Session Transfer Token user mismatch detected. | 既存の Auth0 セッションが、セッション転送トークンとは別のユーザーに属しています。 |
Single Sign-On failed: Parent refresh token not found. Session Transfer Token won't be used for session establishment. | セッション転送トークンの作成に使用された親リフレッシュトークンが失効しているか、削除されています。 |