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

# 代替ログアウトでユーザーをリダイレクトする

> レガシーログアウトのエンドポイントを使ってユーザーをリダイレクトする方法を説明します。

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASKED*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

ログアウト後にユーザーを特定のURLにリダイレクトできます。テナントまたはアプリケーションの設定で、リダイレクトURLを登録する必要があります。Auth0は、ログアウト後に許可リストURLのみにリダイレクトします。各アプリケーションごとに異なるリダイレクトが必要な場合は、アプリケーション設定の許可リストにURLを追加できます。

1. ターゲットをURL値として、`returnTo`クエリ文字列パラメーターを追加します。渡されるリダイレクト先のURLをエンコードします。たとえば、ログアウト後にユーザーを`https://www.example.com`にリダイレクトするには、以下の要求を作成します。
   `https://{yourDomain}/v2/logout?returnTo=https%3A%2F%2Fwww.example.com`.
2. 以下の2つの場所のいずれかに、 **［Allowed Logout URLs（許可されているログアウトURL）］** として、エンコードされていない `returnTo` URL（例：`https://www.example.com`）を追加します。

   * **Tenant Settings（テナント設定）** ：`client_id`パラメーターを含まないログアウト要求については、[［Tenant Settings（テナント設定）］の［Advanced（高度な設定）］タブ](https://manage.auth0.com/#/tenant/advanced)の **［Allowed Logout URLs（許可されているログアウトURL）］** リストに`returnTo` URLを追加する必要があります。

     ユーザーがテナントレベルでログアウトした後にリダイレクト先となるURLのリストを追加するには、Auth0 Dashboard.の[［Tenant Settings（テナント設定）］ > ［Advanced（高度な設定）］](https://manage.auth0.com/#/tenant/advanced) に移動します。

     <Frame>
       <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/77s6AWMuzH78ABObR3lg0o/c91ff62cd7688ce7b4484acf8a4aefa0/2025-02-27_11-15-05.png?fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=d39d7e4004b008e57eb11e191653e03b" alt="Auth0 Dashboard 設定 高度な設定タブ ログインとログアウト" width="1404" height="888" data-path="docs/images/ja-jp/cdy7uua7fh8z/77s6AWMuzH78ABObR3lg0o/c91ff62cd7688ce7b4484acf8a4aefa0/2025-02-27_11-15-05.png" />
     </Frame>

   * **Auth0のApplication Settings（アプリケーションの設定）** ：`client_id`パラメーターを含むログアウト要求については、関連するAuth0アプリケーションの **［Settings（設定）］** タブの **［Allowed Logout URLs（許可されているログアウトURL）］** リストに`returnTo` URLを追加する必要があります。

     <Frame>
       <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/w3k2AH_K7Myvi2qD/docs/images/ja-jp/cdy7uua7fh8z/1QhW2i4fTCCp8owey2tMPI/4df7b8f2bae9eea8cd2e4ba1867d0916/Application_URIs_-_Japanese.png?fit=max&auto=format&n=w3k2AH_K7Myvi2qD&q=85&s=d1164faa288e6ea38048bd6ca7e4195f" alt="Dashboard アプリケーション アプリケーション設定 アプリケーションのURL" width="1202" height="1251" data-path="docs/images/ja-jp/cdy7uua7fh8z/1QhW2i4fTCCp8owey2tMPI/4df7b8f2bae9eea8cd2e4ba1867d0916/Application_URIs_-_Japanese.png" />
     </Frame>

URLリストを提供する際には、以下を行うことができます。

1. 複数の有効なURLをカンマ区切りで指定する
2. `*`を[サブドメインのワイルドカードとして使用する](/docs/ja-jp/get-started/applications/wildcards-for-subdomains)（例：`http://*.example.com`）

`client_id`パラメーターが含まれていて、`returnTo` URLが設定されていない場合は、サーバーは、Dashboardに設定されている最初の［Allowed Logout URLs（許可されているログアウトURL）］にユーザーをリダイレクトします。

検証エラーを避けるために、URLのプロトコルの部分を必ず含めます。たとえば、`*.example.com`に値を設定すると、検証エラーが発生するので、代わりに、`http://*.example.com`を使用します。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0の`oidc/logout`エンドポイントを使ってリダイレクトする方法については、「[OIDCのエンドポイントを使ってユーザーをAuth0からログアウトさせる](/docs/ja-jp/authenticate/login/logout/log-users-out-of-auth0)」をお読みください。
</Callout>

## フェデレーションログアウト

[いくつかのプロバイダー](https://auth0.com/docs/authenticate/login/logout/log-users-out-of-idps#federated-logout-support)は、フェデレーションログアウトをサポートしています。

フェデレーションログアウトを使用してユーザーをアプリケーションからリダイレクトするには、以下のエンドポイントでフェデレーションログアウトを開始します。

`https://{yourDomain}/v2/logout?federated`

リダイレクト前に、アプリケーションがユーザーセッションを終了する必要がありますが、これはお客様の責任となります。

ユーザーが`/logout`エンドポイントに到達すると、Auth0は、Auth0セッションを終了し、ユーザーをIDプロバイダーのログアウトエンドポイントにリダイレクトして、IDプロバイダーとのセッションを終了します。

## 制限事項

* `returnTo`パラメーターの値として提供されたURL、クエリ文字列、URLの一部として提供されたハッシュ情報の検証は、考慮されません。
* ソーシャルプロバイダーのフェデレーションログアウトの動作は、一致しません。プロバイダーによって`returnTo`パラメーターの扱いは異なり、動作しないプロバイダーもあります。ソーシャルプロバイダーの設定で、`returnTo`パラメーターを受け入れていること、またその動作について確認してください。
* **［Allowed Logout URLs（許可されているログアウトURL）］** リストに提供されたURLは、大文字と小文字を区別するため、ログアウトに使用されたURLは、Dashboardで設定されたログアウトURLケースと大文字・小文字が一致している必要があります。しかし、スキームおよびホスト部分は大文字と小文字を区別しないのでご注意ください。たとえば、URLが`http://www.Example.Com/FooHoo.html`であれば、`http://www.Example.Com` の部分では大文字と小文字の区別がされず、`FooHoo.html`の部分では区別されます。

GoogleやFacebookなどのソーシャルIDプロバイダーを使用している場合は、ログアウトが適切に機能するように、[Dashboard](https://manage.auth0.com/#)でこれらプロバイダーの`Client ID`および`Secret`を設定する必要があります。

## Facebookの追加要件

ログアウト後にユーザーにリダイレクトする方法を指定するために、`returnTo`パラメーターを使用します。

すべての<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=idp" tip="IDプロバイダー（IdP）: デジタルIDを保存および管理するサービス。" cta="用語集の表示">IdPs</Tooltip>が`returnTo`をサポートしているとは限りません。

Facebookについては、以下の例にあるコードでは、`returnTo`を使用して、リダイレクトのWebサイトを指定しています。

export const codeExample = `https://{yourDomain}/v2/logout?federated&
      returnTo=https://{yourDomain}/logout?returnTo=http://www.example.com
      &access_token={facebookAccessToken}`;

<AuthCodeBlock children={codeExample} language="http" />

## もっと詳しく

* [アプリケーションからユーザーをログアウトする](/docs/ja-jp/authenticate/login/logout/log-users-out-of-applications)
* [OIDCエンドポイントを使用してユーザーをAuth0からログアウトさせる](/docs/ja-jp/authenticate/login/logout/log-users-out-of-auth0)
* [ユーザーをIDプロバイダーからログアウトさせる](/docs/ja-jp/authenticate/login/logout/log-users-out-of-idps)
* [ユーザーをSAML IDプロバイダーからログアウトする](/docs/ja-jp/authenticate/login/logout/log-users-out-of-saml-idps)
* [ログインとログアウトの問題を確認する](/docs/ja-jp/troubleshoot/authentication-issues/check-login-and-logout-issues)
