> ## 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.

> Native to Web SSO のベストプラクティスについて説明します

# Native to Web SSO のベストプラクティス

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

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

[`post-login`](/ja/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger) Action トリガーを使用すると、Native to 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>

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

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

長期間有効なトークンが本当に必要な Web アプリケーションでのみ、[`allow_refresh_token`](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) を有効にしてください。ほとんどの場合、短期間有効な <Tooltip tip="アクセストークン: API へのアクセスに使用される認可資格情報で、不透明な文字列または JWT の形式を取ります。" cta="用語集を見る" href="/ja/docs/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="/ja/docs/glossary?term=refresh+tokens">リフレッシュトークン</Tooltip>がログアウト後も残り続けないようにするには、[`allow_refresh_token`](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) 設定を使用して、Native to 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) を有効にします。これは、アプリケーション間でセッションを安全に無効化するうえで重要です。
