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

# OIDC準拠認証の採用

> OIDC準拠のアプリケーション設定が認証パイプラインに与える影響について説明します。

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>;
};

Auth0は[認定OpenID Connect (OIDC)プロバイダー](http://openid.net/certification/)です。Auth0 では、セキュリティと標準ベースの相互運用性を向上させる取り組みの一環として、[OIDC仕様](http://openid.net/specs/openid-connect-core-1_0.html)に厳密に準拠した認証フローにのみ新しい機能を展開しています。

OIDC準拠パイプラインとレガシーパイプラインの違いを説明し、既存のアプリケーションを適応させる方法について説明します。[OAuth 2.0認可フレームワーク](/docs/ja-jp/authenticate/protocols/oauth)を使用してアプリケーションでAuth0統合を管理する開発者および/またはIT管理者の場合。この情報は、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-1" href="/docs/ja-jp/glossary?term=security-assertion-markup-language" tip="Security Assertion Markup Language（SAML）: パスワードなしに二者間で認証情報を交換できる標準化プロトコル。" cta="用語集の表示">SAML</Tooltip>またはWSフェデレーションを使用している場合には適用されません。すべての認証フローは、特定の言語またはライブラリ実装のコンテキストではなく、HTTP要求を通じて記述されます。

すべての新機能はOIDC準拠のパイプラインのみを対象としており、すべてのレガシーAuth0 SDKバージョンは非推奨となり、新機能や重大でないセキュリティ問題に対する更新は受信されず、最終的には廃止されます。さらに、本ガイド以外のすべてのドキュメント、ライブラリ、および例は、OIDC準拠のパイプラインにのみ適用されます。このため、近い将来に新しい機能や機能を活用する必要がない場合でも、OIDC準拠のパイプラインを採用することを強くお勧めします。

## OIDC準拠のパイプラインの採用

テナントの世代に応じて、OIDC準拠パイプラインを採用するためのさまざまなオプションがある場合があります。

### 新しいテナント

Auth0ダッシュボードを使用して新しいテナントを作成する場合、デフォルトでOIDC準拠のパイプラインが使用されます。これは、2019年初頭からダッシュボードのデフォルト設定となっています。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  OIDC Conformant（OIDC準拠）設定を手動で無効にすることはできますが、以前のテナントに関する指示に従ってください。
</Callout>

### 古いテナント

本ガイドで説明されているすべての変更を特定のアプリケーションに対して同時に強制し、実行時ではなく構成中にすべての重大な変更を検出できるようにするには、次の操作を行う必要があります。

1. [［Dashboard］>［Applications（アプリケーション）］>［Applications（アプリケーション）］](https://manage.auth0.com/#/applications)に進み、希望するアプリケーションを選択します。
2. **［Advanced Settings（詳細設定）］** にスクロールし、 **OAuth** タブに進みます。
3. **［OIDC Conformant（OIDC準拠）］** トグルスイッチを有効にし、 **［Save Changes（変更を保存）］** をクリックします。

認証要求ごとにOIDC準拠のパイプラインを使用する必要があり、アプリケーションが<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-3" href="/docs/ja-jp/glossary?term=json-web-token" tip="JSON Web Token（JWT）: 二者間のクレームを安全に表現するために使用される標準IDトークン形式（および多くの場合、アクセストークン形式）。" cta="用語集の表示">JWT</Tooltip>アクセストークンを使用してAPIを呼び出す必要がある場合は、`audience`パラメーターを使用して[`/social`](/docs/ja-jp/api/authentication#social)エンドポイントへの要求を開始します。

認証要求ごとにOIDC準拠のパイプラインを使用する必要があり、アプリケーションがAPIを呼び出す必要がない場合は、次の`audience`パラメーターを使用します。

export const codeExample = `https://{yourDomain}/userinfo`;

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

## 違い

OIDC準拠パイプラインを有効にすると、従来のパイプラインに次の変更が加えられます。

### API

アプリケーションとAPI（リソース）は、個別のAuth0エンティティとして定義してください。詳細は「[OIDC準拠の採用：API](/docs/ja-jp/authenticate/login/oidc-conformant-authentication/oidc-adoption-apis)」をお読みください。

### アクセストークン

* APIは、IDトークンではなくアクセストークンを使用して保護してください。これらの違いに関する詳細は、「[トークン](/docs/ja-jp/secure/tokens)」をお読みください。
* ユーザーに関する標準的なクレームの定義済みセットは、IDトークンまたは`/userinfo`からの応答で返されます。
* カスタムクレームは、名前付き形式に準拠する必要があります。詳細については、「[名前空間カスタムクレームを作成する](/docs/ja-jp/secure/tokens/json-web-tokens/create-custom-claims)」をお読みください。
* `/userinfo`からの応答はIDトークンの内容と同様にOIDC仕様に準拠します。
* スコープは、標準クレームまたはカスタムAPIアクセス許可のいずれかを要求するために使用できます。

詳細は、「[OIDC準拠の採用：アクセストークン](/docs/ja-jp/authenticate/login/oidc-conformant-authentication/oidc-adoption-access-tokens)」をお読みください。

### 認可フロー

* [認可コードフロー](/docs/ja-jp/authenticate/login/oidc-conformant-authentication/oidc-adoption-auth-code-flow)：認証要求、認証応答、コード交換要求、コード交換応答、IDトークン構造、アクセストークン構造には構造上の違いがあります。
* [クライアントの資格情報フロー](/docs/ja-jp/authenticate/login/oidc-conformant-authentication/oidc-adoption-client-credentials-flow)：新しいフローが有効になり、アプリケーションがユーザーの代わりにではなく自分自身として認証し、プログラムによってセキュアにAPIへのアクセスを取得できるようになりました。
* [暗黙フロー](/docs/ja-jp/authenticate/login/oidc-conformant-authentication/oidc-adoption-implicit-flow)：認証要求、認証応答、IDトークン構造、アクセストークン構造には構造上の違いがあります。具体的には次のような違いがあります。

  * `response_type=token`はアクセストークンのみを返します。IDトークンを取得するには、`response_type=id_token`または`response_type=token id_token`を使用します。
  * IDトークンはRS256を使用して非対称的に署名されます。
  * nonceパラメーターなしで行われた認証要求は拒否されます。詳細は「[暗黙フローの使用時にリプレイ攻撃を軽減する](/docs/ja-jp/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post/mitigate-replay-attacks-when-using-the-implicit-flow)」をお読みください。
  * 認証に暗黙フローを使用すると、リフレッシュトークンは返されなくなります。
* [リソース所有者のパスワードフロー](/docs/ja-jp/authenticate/login/oidc-conformant-authentication/oidc-adoption-rop-flow)：認証要求、認証応答、IDトークン構造、アクセストークン構造には構造上の違いがあります。具体的には次のような違いがあります。

  * 従来の[リソース所有者エンドポイント](/docs/ja-jp/api/authentication#database-ad-ldap-active-)が無効になり、そのエンドポイントからの埋め込みログインのパスワードレス認証も無効になります。[埋め込みログインでパスワードレスを実装する](/docs/ja-jp/connections/passwordless/guides/embedded-login)には、アプリケーションの種類に応じて、埋め込みパスワードレスAPIまたはSDKを使用してください。
  * `offline_access`スコープを使用してリフレッシュトークンを要求する場合、`device`パラメーターは無効と見なされるようになりました。

### 委任

* **廃止** ：[`/delegation`](/docs/ja-jp/api/authentication#delegation)エンドポイント、サードパーティのAPIトークンを取得するために使用される場合を除く。
* OIDC準拠のアプリケーションは、委任要求のソースまたはターゲットになることはできません。

詳細は「[OIDC準拠の採用：委任](/docs/ja-jp/authenticate/login/oidc-conformant-authentication/oidc-adoption-delegation)」をお読みください。

### エンドポイント

* **廃止** ：`/tokeninfo`エンドポイント
* **無効** ：[`/oauth/access_token`](/docs/ja-jp/api/authentication#post-oauth-access_token)エンドポイント（ネイティブモバイルアプリケーションからのソーシャル認証に使用）。
* **廃止** ：`/ssodata`エンドポイント
* **廃止** ：[`/delegation`](/docs/ja-jp/api/authentication#delegation)エンドポイント、サードパーティーAPIトークンを取得するために使用される場合を除く。

### リフレッシュトークン

* 認証に暗黙フローを使用すると、リフレッシュトークンは返されなくなります。
* リフレッシュトークンは機密アプリケーションに使用できますが、リフレッシュトークンのローテーションによりほとんどのフローのセキュリティを強化できるため、PKCEを使用した認証コードフローを使用する場合は、常にパブリックアプリケーションに使用してください。機密アプリケーションの詳細については、「[機密アプリケーションと公開アプリケーション](/docs/ja-jp/get-started/applications/confidential-and-public-applications)」をお読みください。リフレッシュトークンのローテーションの詳細については、「[リフレッシュトークンのローテーション](/docs/ja-jp/secure/tokens/refresh-tokens/refresh-token-rotation)」をお読みください。
* 新しいトークンを取得するときは、`/oauth/token`エンドポイントを使用してください。
* 認証要求で`offline_access`スコープを使用してリフレッシュトークンを要求する場合、`device`パラメーターは不要になりました。

詳細は「[OIDC準拠の採用：リフレッシュトークン](/docs/ja-jp/authenticate/login/oidc-conformant-authentication/oidc-adoption-refresh-tokens)」をお読みください。

### シングルサインオン（SSO）

* <Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=single-sign-on" tip="シングルサインオン（SSO）: ユーザーが1つのアプリケーションにログインした後、そのユーザーを他のアプリケーションに自動的にログインさせるサービス。" cta="用語集の表示">SSO</Tooltip>はAuth0ログインページからのみ実行できるため、ユニバーサルログインを使用してください。
* ユーザーがSSO経由でログインしているかどうかを確認するには、サイレント認証を使用してください。詳細は、「[サイレント認証を構成する](/docs/ja-jp/authenticate/login/configure-silent-authentication)」をお読みください。
* **廃止** ：`/ssodata`エンドポイントおよび`Lock/auth0.js`の`getSSOData()`メソッド。

詳細は「[OIDC準拠の採用：シングルサインオン](/docs/ja-jp/authenticate/login/oidc-conformant-authentication/oidc-adoption-sso)」をお読みください。

### 追加機能

* API用のサードパーティーアプリケーションを作成し、認可のための同意ダイアログを表示します。詳細は「[ユーザーの同意およびサードパーティーアプリケーション](/docs/ja-jp/get-started/applications/confidential-and-public-applications/user-consent-and-third-party-applications)」をお読みください。
* 認証時にアプリケーションに提供されるユーザープロファイル情報を制限します。詳細は「[ユーザープロファイル](/docs/ja-jp/manage-users/user-accounts/user-profiles/user-profile-structure)」をお読みください。
* 動的にアプリケーションを登録します。詳細については、「[動的クライアント登録](/docs/ja-jp/get-started/applications/dynamic-client-registration)」をお読みください。
* [組織](https://auth0.com/docs/manage-users/organizations)とその関連機能が利用可能になります。
