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

# 認証方法の選択

export const SignupCTA = ({children}) => {
  return <div className="flex flex-wrap items-center gap-4 p-5 rounded-lg border border-gray-200 dark:border-gray-700 my-6" style={{
    background: "linear-gradient(135deg, rgba(0, 97, 213, 0.06), rgba(0, 97, 213, 0.02))"
  }}>
      <div className="flex-1 text-sm leading-relaxed text-gray-700 dark:text-gray-300" style={{
    minWidth: "280px"
  }}>
        {children}
      </div>
      <div className="flex flex-col items-center gap-2">
        <a href="https://account.box.com/signup/developer#ty9l3" className="signup-cta-button inline-flex items-center whitespace-nowrap px-5 py-2 text-sm font-semibold text-white no-underline">
          {translate("Get started for free")}
        </a>
        <a href="https://account.box.com/developers/console" className="signup-cta-login text-xs text-gray-500 dark:text-gray-400 no-underline whitespace-nowrap">
          {translate("Already have an account? Log in")}
        </a>
      </div>
    </div>;
};

export const Link = ({href, children, className, ...props}) => {
  const localizedHref = localizeLink(href);
  return <a href={localizedHref} className={className} {...props}>
      {children}
    </a>;
};

アプリケーションで使用できる承認の種類は、特定のユースケースによって異なります。

<Card href={localizeLink("/guides/applications/platform-apps/create")} arrow title="Platformアプリの作成方法を確認する" />

選択した認証方法に応じて、さらに詳細を指定する必要があります。

| 認証方法             | 詳細                                             |
| ---------------- | ---------------------------------------------- |
| **OAuth 2.0**    | クライアントIDとクライアントシークレットを指定します。                   |
| **JWT**          | 公開キーを追加するか、公開/秘密キーペアを生成します。アプリのアクセスレベルを選択します。  |
| **クライアント資格情報許可** | クライアントIDとクライアントシークレットを指定します。アプリのアクセスレベルを選択します。 |

See <Link href="/guides/applications/platform-apps/create">Create a Platform App</Link> for details.

## クライアント側

### OAuth 2.0

OAuth 2.0では、アプリケーションに対して、エンドユーザーをブラウザにリダイレクトしてBoxにログインさせ、ユーザーに代わってアプリケーションが処理を実行することを承認するよう要求します。

<Frame center width="400" shadow border>
  <img src="https://mintcdn.com/box/ozetuUHA5lVSDzR-/ja/guides/authentication/oauth2-grant.png?fit=max&auto=format&n=ozetuUHA5lVSDzR-&q=85&s=022eb3b69a34c306cdb3e20cc7d1d686" alt="BoxのOAuth 2.0承認" width="796" height="890" data-path="ja/guides/authentication/oauth2-grant.png" />
</Frame>

<Info>
  **OAuth 2.0はいつ使用すべきですか?**

  クライアント側認証は、以下に当てはまるアプリに最適な認証方法です。

  * 既存のBoxアカウントを持っているユーザーを使用する
  * ユーザーがBoxを使用していることを認識できるように、ID管理にBoxを使用する
  * アプリケーションのサービスアカウントではなく各ユーザーアカウント内にデータを保存する
</Info>

<Card href={localizeLink("/guides/authentication/oauth2")} arrow title="OAuth 2.0を使用したクライアント側認証を確認する" />

## サーバー側

### JWT

JSONウェブトークン (JWT) を使用するサーバー側認証では、エンドユーザーによる操作が必要ありません。また、適切な権限が付与されていれば、この認証方法を使用して、企業内の任意のユーザーの代理で操作することができます。IDの確認には、JWTアサーションおよび公開/秘密キーペアを使用します。

<Frame center shadow border>
  <img src="https://mintcdn.com/box/qMvmrptl_56Hug64/ja/guides/authentication/jwt-flow.png?fit=max&auto=format&n=qMvmrptl_56Hug64&q=85&s=738c8a501025ebf2dcf941c8e670fdd0" alt="BoxのJWTフロー" width="1920" height="1080" data-path="ja/guides/authentication/jwt-flow.png" />
</Frame>

<Info>
  **JWTはいつ使用すべきですか?**

  JWTを使用するサーバー側認証は、以下に当てはまるアプリに最適な認証方法です。

  * Boxアカウントを持たないユーザーを使用する
  * 独自のIDシステムを使用する
  * Boxを使用していることをユーザーに認識させたくない
  * ユーザーのアカウントではなくアプリケーションのサービスアカウント内にデータを保存する
</Info>

<Card href={localizeLink("/guides/authentication/jwt")} arrow title="JWTを使用したサーバー側認証を確認する" />

### クライアント資格情報許可

クライアント資格情報許可を使用するサーバー側認証では、エンドユーザーによる操作が必要ありません。また、適切な権限が付与されていれば、この認証方法を使用して、企業内の任意のユーザーの代理で操作することができます。IDの確認には、アプリケーションのクライアントIDとクライアントシークレットを使用します。

<Info>
  **クライアント資格情報許可はいつ使用すべきですか?**

  クライアント資格情報許可を使用するサーバー側認証は、以下に当てはまるアプリに最適な認証方法です。

  * Boxアカウントを持たないユーザーを使用する
  * 独自のID管理システムを使用する
  * Boxを使用していることをユーザーに認識させたくない
  * ユーザーのアカウントではなくアプリケーションのサービスアカウント内にデータを保存する
</Info>

<Card href={localizeLink("/guides/authentication/client-credentials")} arrow title="クライアント資格情報許可を使用したサーバー側認証を確認する" />

## 比較

以下に、クライアント側とサーバー側の認証の主な違いの概要を示します。

|                 | OAuth 2.0 | JWT | クライアント資格情報 |
| --------------- | --------- | --- | ---------- |
| ユーザーの関与が必要?     | はい        | いいえ | いいえ        |
| 管理者の承認が必要?      | いいえ       | はい  | はい         |
| 他のユーザーの代理で操作可能? | はい        | はい  | はい         |
| ユーザーにBoxを表示?    | はい        | いいえ | いいえ        |
| App Userを作成可能?  | いいえ       | はい  | はい         |

<Note>
  無料のDeveloperアカウントを使用して作成したアプリは、自動で承認されます。そのような環境では、アプリの使用前にJWTアプリやクライアント資格情報許可アプリで別途管理者の承認が求められることはありません。承認の詳細については、<Link href="/guides/authorization/platform-app-approval">Platformアプリの承認</Link>を参照してください。
</Note>

<Info>
  アクセストークンは特定のBoxユーザーに関連付けられており、そのユーザーが誰であるかは、トークンがどのように取得されたかによって決まります。

  たとえば、クライアント側認証を使用している場合、トークンは、自分のアカウントへのアクセス権限を付与したユーザーを表します。一方、サーバー側認証を使用している場合、トークンは、デフォルトでアプリケーションのサービスアカウントとなります。
</Info>

<SignupCTA>
  作成を始める準備ができたら、無料のDeveloperアカウントを作成すると、開発者コンソールにアクセスし、Platformアプリを作成してお好みの認証方法を構成できます。
</SignupCTA>
