> ## 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 アプリケーションの設定とどのように関係するかを説明します。

[OAuth 2.0 specification](https://tools.ietf.org/html/rfc6749#section-2.1) によると、アプリケーションは、その認証能力 (シークレットを保持できるかどうか) に応じて、コンフィデンシャルまたはパブリックのいずれかに分類されます。

<div id="confidential-applications">
  ## 機密アプリケーション
</div>

機密アプリケーションは、資格情報を安全に保持し、権限のない第三者に漏らさずに扱えます。シークレットを保存するために、信頼できるバックエンドサーバーが必要です。

<div id="grant-types">
  ### グラントタイプ
</div>

機密アプリケーションは信頼できるバックエンドサーバーを使用し、Auth0 Authentication API の [Get Token](https://auth0.com/docs/api/authentication#get-token) エンドポイントを呼び出して認証を行う際に、Client ID と <Tooltip tip="Client Secret: クライアント（アプリケーション）が認可サーバーに対して認証するために使用する Secret。これはクライアントと認可サーバーだけが知っているべきもので、推測できないよう十分にランダムである必要があります。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Client+Secret">Client Secret</Tooltip> (または登録済みの別の資格情報) の指定が必要なグラントタイプを使用できます。機密アプリケーションでは、Client Secret Post、Client Secret Basic、または [Private Key JWT](/docs/ja-jp/get-started/authentication-and-authorization-flow/authenticate-with-private-key-jwt) 認証方式を使用できます。

以下は機密アプリケーションと見なされます。

* 安全なバックエンドを備え、[認可コードフロー](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow)、[Resource Owner Password Flow](/docs/ja-jp/get-started/authentication-and-authorization-flow/resource-owner-password-flow)、またはレルム対応の <Tooltip tip="リソース所有者: 保護されたリソースへのアクセスを許可できるエンティティ（ユーザーやアプリケーションなど）。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Resource+Owner">Resource Owner</Tooltip> Password Flow を使用する Web アプリケーション

* [クライアント認証情報フロー](/docs/ja-jp/get-started/authentication-and-authorization-flow/client-credentials-flow) を使用するマシンツーマシン (M2M) アプリケーション

<div id="id-tokens">
  ### ID トークン
</div>

機密アプリケーションはシークレットを保持できるため、次の 2 つの方法のいずれかで署名された <Tooltip tip="ID トークン: リソースへのアクセスではなく、クライアント自体のための資格情報。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=ID+tokens">ID トークン</Tooltip> を発行できます。

* クライアントシークレットを使用する対称署名 (`HS256`)

* 秘密キーを使用する非対称署名 (`RS256`)

<div id="public-applications">
  ## パブリックアプリケーション
</div>

パブリックアプリケーションでは、資格情報を安全に保持することが**できません**。

<div id="grant-types">
  ### グラントタイプ
</div>

パブリックアプリケーションで使用できるのは、クライアントシークレット を必要としないグラントタイプに限られます。必要な資格情報の機密性を保てないため、クライアントシークレット を送信できません。

以下がパブリックアプリケーションです。

* [PKCE を使用した Authorization Code フロー](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce)を使用する、Native のデスクトップまたはモバイル アプリケーション

* [Implicit Flow](/docs/ja-jp/get-started/authentication-and-authorization-flow/implicit-flow-with-form-post)グラントを使用する、JavaScript ベースのクライアントサイド Web アプリケーション (シングルページアプリなど)

<div id="id-tokens">
  ### ID トークン
</div>

パブリックアプリケーションはシークレットを保持できないため、それらに発行される[ID トークン](/docs/ja-jp/secure/tokens/id-tokens)は、次の条件を満たしている必要があります。

* 秘密キー (`RS256`) を使用して非対称署名されていること
* トークンの署名に使用した秘密キーに対応する公開キーで検証されること

<div id="how-auth0-determines-credential-security">
  ## Auth0 による資格情報のセキュリティの判断方法
</div>

Auth0 では、アプリケーションの種類と、利用可能な場合はアプリケーションが Auth0 Authentication API の [Get Token エンドポイント](https://auth0.com/docs/api/authentication/authorization-code-flow/get-token) に対して認証する方法を定義する **認証方法** の設定に基づいて、アプリケーションがコンフィデンシャルかパブリックかを判断します。

* 通常の Web アプリケーションとマシンツーマシンアプリケーションは、認証方法を「なし」に設定しない限り、コンフィデンシャルです。

* シングルページアプリケーションとネイティブアプリはパブリックです。

  これらのアプリケーションの種類では、<Tooltip tip="トークンエンドポイント: トークンをプログラムでリクエストするために使用される認可サーバー上のエンドポイント。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=Token+endpoint">トークンエンドポイント</Tooltip>の認証方法に必要な資格情報の機密性を維持できないため、Auth0 Dashboard にはこれらのアプリケーションの種類向けの認証方法や資格情報の設定はありません。

これらの値は、機密アプリケーションとパブリックアプリケーションに次のように対応します。

| アプリケーションの種類   | 例                   | トークンエンドポイントの認証方法                               |
| ------------- | ------------------- | ---------------------------------------------- |
| **パブリック**     | シングルページまたはネイティブ     | **なし**                                         |
| **コンフィデンシャル** | 通常の Web またはマシンツーマシン | **Basic**、**Post**、**Private Key JWT**、**未指定** |

<div id="check-and-manage-the-authentication-method">
  ## 認証方法を確認・管理する
</div>

アプリケーションが Auth0 に機密アプリケーションまたはパブリックアプリケーションとして登録されているかどうかは、Auth0 Dashboard で確認できます。[アプリケーション > アプリケーション](https://manage.auth0.com/#/applications)で、確認するアプリケーション名を選択します。

* **資格情報**タブが表示されない場合、そのアプリケーションはパブリックアプリケーションです。

* **資格情報**タブが表示される場合、そのアプリケーションは機密アプリケーションです。

<Frame>
  <img src="https://mintcdn.com/translations/Dcx0M11uuptU53TX/docs/images/cdy7uua7fh8z/33kfi48tkbMIOQJ8PBxj76/5b79ffda11ad58b27128068057e6e05c/Default_App_-_Creds_-_English.png?fit=max&auto=format&n=Dcx0M11uuptU53TX&q=85&s=a9de550257ed5da2f82681751b4d3e12" alt="Private Key JWT 認証の設定 - Auth0 Dashboard の手順" width="1102" height="1197" data-path="docs/images/cdy7uua7fh8z/33kfi48tkbMIOQJ8PBxj76/5b79ffda11ad58b27128068057e6e05c/Default_App_-_Creds_-_English.png" />
</Frame>

**資格情報**タブでは、アプリケーションの認証方法を管理できます。

* **なし**: <Tooltip tip="クライアントシークレット: クライアント（アプリケーション）が認可サーバーに対して認証するために使用するシークレット。クライアントと認可サーバーのみが知るべきものであり、推測されないよう十分にランダムである必要があります。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=client+secret">クライアントシークレット</Tooltip>を持たないパブリックアプリケーション。
* **Client Secret Post**: POST リクエスト本文のパラメータでクライアントシークレットを送信するアプリケーション。
* **Client Secret Basic**: HTTP BASIC 認証方式でクライアントシークレットを送信するアプリケーション。
* **Private Key <Tooltip tip="JSON Web トークン（JWT）: 2 者間でクレームを安全に表現するために使用される標準的な ID トークン形式（多くの場合、アクセストークン形式としても使用されます）。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=JWT">JWT</Tooltip>**: 非対称認証を使用するアプリケーション。

詳細については、[Application Credentials](/docs/ja-jp/secure/application-credentials)を参照してください。
