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

# 認証方法

Boxには、アプリケーション開発のためのさまざまな認証方法が用意されており、それぞれが異なるユースケースやアプリケーションの種類に対応しています。使用する認証方法に関係なく、基本的な原則が適用されます。ユーザーは、メインのBoxウェブアプリのフロントエンドでコンテンツにアクセスできない場合、別のユーザーになりすまさない限り、APIを使用してコンテンツにアクセスすることはできません。APIエンドポイントの中には、イベントなど、管理者レベルの権限が必要なものもあります。

各種Boxアプリケーションでは、以下の承認方法を使用できます。

| Boxアプリケーションの種類 | OAuth 2.0をサポートしますか? | JWTは? | クライアント資格情報は? |
| -------------- | ------------------- | ----- | ------------ |
| Platformアプリ    | はい                  | はい    | はい           |

## OAuth 2.0

[OAuth 2.0][oauth]はクライアント側の認証方法で、そのシンプルさからBox APIに対するユーザーの承認で広く使われています。これはオープンスタンダードであり、ユーザーはアプリケーションに対して他のアプリケーション内の自分のデータへのアクセスを許可できるようになります。Boxのクライアント側認証では、Twitter、Facebook、Googleを使用してウェブサイトにログインする仕組みと同様に、ユーザーはアプリからBoxウェブアプリにリダイレクトされるので、そこでログインしてアプリに自分のデータへのアクセスを許可します。たとえば、Boxではコミュニティフォーラムにログインするユーザーに対してこの認証タイプを使用します。

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

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

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

Python OAuth 2.0に関する有用なチュートリアルについては、[GitHub][python_oauth]を参照してください。

## JSONウェブトークン (JWT)

JSONウェブトークン (JWT) は、Box APIの最も一般的なサーバー側認証方法です。[JWT][jwt]はオープンスタンダードであり、堅牢なサーバー間認証を実現します。この方法は、Platformアプリのみに限定されており、エンドユーザーによる操作は必要ありません。適切な権限が付与されているアプリは、企業内の任意のユーザーの代理として操作できるため、強力でシームレスな統合が促進されます。管理者が承認すると、JWTアプリケーションには、デフォルトで、APIコールを行うサービスアカウントが割り当てられます。

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

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

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

Node JWTに関する有用なチュートリアルについては、[Medium][node_jwt]を参照してください。

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

[クライアント資格情報許可][ccg]のアプローチは、サーバー認証に使用され、クライアントIDとシークレットを使用してアプリケーションのIDを検証します。これは、アクセストークンを取得する際にアプリケーションを識別するための安全な方法です。この方法は、ユーザーの関与なしにサーバー間でやり取りする必要があるシナリオで特に便利です。アプリケーションの構成に応じて、アプリケーションのサービスアカウントまたは管理対象ユーザーとして認証できます。管理者が承認すると、CCGアプリケーションには、デフォルトで、APIコールを行うサービスアカウントが割り当てられます。

<Note>
  **CCGを使用する場合**

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

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

Python CCGに関する有用なチュートリアルについては、[Medium][python_ccg]を参照してください。

### ユーザー権限とスコープ

アクションを実行するための適切なスコープがアプリケーションに設定されている場合でも、アクセストークンと関連付けられた、呼び出しを実行するユーザーにはそのアクションを実行するための権限が必要であり、逆の場合も同様であることを理解することが重要です。

たとえば、ファイルを読み取るようにアプリケーションが設定されている場合、アクセスしようとするファイルの読み取り権限が認証済みユーザーにも必要です。

スコープ、トークンの権限、ユーザー権限がどのように連携しているかの詳細については、Boxの[セキュリティガイド][security]を参照してください。

<Next>
  次の手順
</Next>

[oauth]: /guides/authentication/oauth2

[jwt]: /guides/authentication/jwt

[ata]: /guides/authentication/app-token

[ccg]: /guides/authentication/client-credentials

[app_ep]: /guides/authentication/app-token/endpoints

[scopes]: /guides/api-calls/permissions-and-errors/scopes

[at]: /guides/authentication/tokens

[security]: /guides/security

[reference]: /ja/reference

[python_oauth]: https://github.com/box-community/box-python-oauth-template

[python_ccg]: https://medium.com/box-developer-japan-blog/box-pythonの次世代sdk-ccgの使用-1c7cff13c24d

[node_jwt]: https://medium.com/box-developer-japan-blog/jwtを使用したbox-node-js-sdkの認証-e3496d610f59

[skill_watson]: https://medium.com/box-developer-blog/box-skills-ibm-watson-speech-to-text-tutorial-b7e3b3c0a8c7
