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

- Update a Client エンドポイントで、Management API の を使用してネイティブアプリケーションを更新します。
- Auth0 CLI を使用して、Native アプリケーションを更新します:
Web アプリケーションを設定する
-
Auth0 Dashboard を使用して Web アプリケーションを更新します。
- Dashboard > Applications に移動します。
- Web アプリケーションを選択するか、新規作成します。
- 設定 タブを選択します。
- 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 を選択します。
- Web アプリケーションを更新するには、Save を選択します。

- Update a Client エンドポイントで Management API Access Token を使用して Web アプリケーションを更新します。
- Auth0 CLI を使用して Web アプリケーションを更新します。
ネイティブからWebへのSSOを実装する
-
クライアントで
allow_refresh_tokenが無効になっていても、アプリケーションがoffline_accessを要求した場合、Auth0はrefresh_tokenを発行しませんが、認証自体は引き続き機能します。 -
Refresh Tokenのローテーションが有効になっている場合、Auth0はトークン交換の呼び出しで新しい
refresh_tokenを返します。リフレッシュトークン交換は、コードから Web アプリケーションを開く直前に実行する必要があります。
Native アプリケーションで
Step 1: リフレッシュトークンを Session Transfer Token に交換する
- Swift、Android、または React Native SDK を使用して、リフレッシュトークンを Session Transfer Token に交換する:
- Swift SDK
- Android SDK
- React Native SDK
- HTTP を使用して、リフレッシュトークンを Session Transfer Token に交換する:
これらのサンプルでは、動的な値にプレースホルダーを使用しています。プレースホルダーは、お使いの Auth0 ドメイン、client_id、既存の refresh_token に置き換えてください。
Refresh Tokenのローテーションが有効な場合、この交換処理ではリフレッシュトークンも返されます。認証時にID トークンをリクエストしていた場合、この呼び出しではID トークンも返されます。
allowed_authentication_methods に応じて、session_transfer_token を Web アプリケーションに送信する方法は 2 つあります。
WebView またはブラウザーを使用する Web アプリケーションが Cookie の挿入をサポートしている場合は、次のように ネイティブアプリケーションを設定できます。
session_transfer_tokenを Cookie に追加します。- WebView またはブラウザーを使用して Web アプリケーションを開きます。
- Web アプリケーションから Auth0 テナントまたは にログインします。
session_transfer_tokenが Cookie に含まれているため、ユーザーに第 1 認証要素の入力は求められません。
オプション 2: URLパラメーターとして session_transfer_token を送信する
- URLパラメーターとして session_transfer_token を追加する。
- WebView またはブラウザーで Web アプリケーションを開く。
session_transfer_tokenを URLパラメーターとして /authorize エンドポイントに付加し、Web アプリケーションにログインする。session_transfer_token は有効で信頼されているため、Auth0 テナントは第1認証要素での認証を要求せずにユーザーを認証します。
Web アプリケーションで
Session Transfer Token が cookie として送信される場合、ブラウザーが
/authorize エンドポイントへのリクエストにその cookie を含めて送信するため、追加の設定は不要です。オプション 1: Web アプリケーションのリクエストに Session Transfer Token を追加する
session_transfer_token を URL パラメータとして送信して /authorize endpoint にリダイレクトします。
オプション 2: Auth0 SDKs を使用して Session Transfer Token を Web アプリケーションに追加する
/authorize エンドポイントへのリクエストに session_transfer_token は含まれません。
以下は、Auth0 SDKs を使用して /authorize エンドポイントへのリクエストで session_transfer_token をリダイレクトする Web アプリケーションの例です。
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 を指定します。
Organizations でのネイティブからWebへのSSO
Organizations をネイティブからWebへのSSO と併用する場合、Web アプリケーションの
/authorize リクエストに含まれる organization パラメーターは、Session Transfer Token に関連付けられた organization と一致している必要があります。一致しない場合、認証は失敗し、ユーザーは再度ログインを求められます。- ネイティブアプリケーションで organization を指定してユーザーを認証します:
javascript
- Web アプリケーションにリダイレクトする際は、
/authorizeリクエストに同じ organization を含めます:
bash
/authorize リクエスト内の organization が Session Transfer Token 内の organization と一致しない場合、Session Transfer Token は拒否され、ユーザーは再認証のためログインページにリダイレクトされます。イベントの説明が “シングルサインオンに失敗しました: Session Transfer Token の organization の不一致が検出されました。” の警告ログが、テナントログに出力されます。
Session Transfer Token with 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 コードでは、位置情報に基づいて transaction を動的に拒否できます。
javascript
親リフレッシュトークンのメタデータにアクセスする
session_transfer_token から作成されるWebセッションに引き継げます。
Auth0 では、この情報を event.session.session_transfer.parent_refresh_token.metadata オブジェクトとして Post Login Actions から利用できます。これにより、プラットフォーム間でメタデータを安全かつ標準化された方法で受け渡せます。
使用例: モバイルアプリがリスクデータ (デバイススコア、位置情報など) を収集し、それをリフレッシュトークンのメタデータに保存します。ネイティブアプリがネイティブからWebへのSSOフローを開始すると、そのメタデータは対応するWebセッションで Actions を通じて自動的に利用できるようになります。
javascript
モニタリング
Token Exchange のログ
sertft: リフレッシュトークン交換の成功。このログは、audienceフィールドが"audience":"urn:$auth0Domain:session_transfer"の場合、ネイティブからWebへのSSOでの交換に対応しますfertft: リフレッシュトークン交換の失敗。このログは、audienceフィールドが"audience": "urn:$auth0Domain:session_transfer"の場合、ネイティブからWebへのSSOでの交換に対応します
セッション転送の検証に関する警告ログ
/authorize リクエスト中にSession Transfer Tokenの検証が失敗すると、警告ログ (w) を出力します。これらのログは、ネイティブからWebへのSSO の問題をトラブルシューティングするのに役立ちます。