> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> セッションの有効期間とリフレッシュトークンの処理に関するAuth0ネイティブからWebへのSSOのベストプラクティスを適用し、ネイティブアプリからブラウザーへのシームレスな移行を維持します。

# ネイティブからWebへのSSOのベストプラクティス

ネイティブからWebへの<Tooltip tip="シングルサインオン（SSO）: ユーザーが1つのアプリケーションにログインすると、そのユーザーは他のアプリケーションにも自動的にログインされるサービスです。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=SSO">SSO</Tooltip>を適切に実装するには、Auth0は以下にまとめたベストプラクティスに従うことを推奨しています。これらのガイドラインは、セッションの整合性を確保するのに役立ちます。

<div id="use-post-login-actions-to-limit-session-lifetime">
  ## Post Login Actions を使用してセッションの有効期間を制限する
</div>

[`post-login`](/docs/ja-jp/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger) Action のトリガーを使用すると、ネイティブからWebへのSSO で作成された Web セッションに適切な時間制限を設け、非アクティブ時にはすばやく期限切れにできます。 
`post-login` Actions を使用すると、`session_transfer_token` によって開始されたセッションを検出し、より短いアイドルタイムアウトと絶対タイムアウトを適用できます。

```swift lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  if (event.session_transfer_token) {
    const now = Date.now();

    // セッションの合計時間を30分に制限する
    api.session.setExpiresAt(now + 30 * 60 * 1000);

    // アイドルタイムアウトを15分に設定する
    api.session.setIdleExpiresAt(now + 15 * 60 * 1000);
  }
};
```

<div id="bind-session_transfer_token-to-the-device-or-ip-address">
  ## `session_transfer_token`をデバイスまたはIPアドレスに紐付ける
</div>

トークンが漏えい、記録、または傍受された場合のトークン再利用リスクを低減するため、[`session_transfer_token`](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) は、`enforce_device_binding` を使用して必ず送信元の環境に紐付けてください。

<div id="use-secure-cookies-over-query-parameters">
  ## クエリパラメータではなくセキュア Cookie を使用する
</div>

`session_transfer_token` は、URL 経由でトークンが意図せずログに記録されたり共有されたりするのを防ぎ、トークン傍受の攻撃対象を減らすため、Auth0ドメインに限定された Secure かつ HTTPOnly な Cookie を使って Webアプリケーションに送信してください。クエリパラメータを使用する必要がある場合は (たとえば Chrome Custom Tabs の場合) 、URL で HTTPS が使用されていることを確認し、使用後は URL からトークンを削除してください。

<div id="avoid-issuing-refresh-tokens-to-web-apps-unless-necessary">
  ## 必要な場合を除き、Webアプリにリフレッシュトークンを発行しないでください
</div>

[`allow_refresh_token`](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) は、本当に長期間有効なトークンを必要とするWebアプリケーションでのみ有効にしてください。ほとんどの場合、有効期間の短い<Tooltip tip="アクセストークン: API へのアクセスに使用される、不透明な文字列または JWT 形式の Authorization 資格情報。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=access+tokens">アクセストークン</Tooltip>とサイレント認証の組み合わせで十分であり、ブラウザー環境ではそのほうが安全です。

<div id="enable-allow-refresh-tokens-when-appropriate-to-set-the-refresh-tokens-as-online">
  ## 必要に応じて Allow Refresh Tokens を有効にし、リフレッシュトークンを「オンライン」に設定する
</div>

孤立した認証情報の発生を防ぎ、<Tooltip tip="リフレッシュトークン: ユーザーに再度ログインさせることなく、新しいアクセストークンを取得するために使用されるトークンです。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=refresh+tokens">リフレッシュトークン</Tooltip>がログアウト後も残らないようにするには、[`allow_refresh_token`](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) 設定を使用して、ネイティブからWebへのSSOで発行されたリフレッシュトークンを、その発行元のセッションにひも付けます。セッションが取り消されるか有効期限切れになると、リフレッシュトークンは自動的に無効化されます。

<div id="enable-enforce-cascade-revocation">
  ## enforce cascade revocation を有効にする
</div>

`session_transfer_token` に関連付けられたすべてのWeb セッションとリフレッシュトークンを確実に失効させるには、ネイティブアプリケーションで [`enforce_cascade_revocation`](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) を有効にします。これは、アプリケーション間で安全にセッションを無効化するために不可欠です。
