メインコンテンツへスキップ
Boxにファイルをアップロードし、Box Viewを使用してプレビューする前に、Box Platformアプリを作成し、サーバー認証用に構成する必要があります。

Platformアプリの作成

認証方法の選択

Box Viewでは、任意のサーバー側認証方法を使用できます。お客様のニーズに適したものを選択してください。
認証方法は作成後に変更できません。別の方法を使用する必要がある場合は、新しいアプリケーションを作成してください。
メソッド最適な用途主な特徴
クライアント資格情報許可 (CCG)Box Viewのほとんどのユースケース設定がシンプル。クライアントIDとシークレットを使用
JWT公開/秘密キーのセキュリティが必要な環境キーペアがベース。シークレットがネットワーク経由で共有されない
どちらの方法もアプリケーションのサービスアカウントとして認証を行います。サービスアカウントはアップロードされたコンテンツをすべて所有しており、エンドユーザーのログインは必要ありません。
アクセス制限付きアプリからの移行: CCGおよびJWT Platformアプリは、アクセス制限付きアプリ (アプリトークン認証) でサポートされている150以上のエンドポイントをすべてサポートしています。ファイルのアップロード、ダウンロード、削除、プレビューのワークフローは同一です。詳細な比較については、認証方法の選択ガイドを参照してください。

アプリケーション設定の構成

アプリケーションを構成するには、開発者コンソールでアプリケーションの [構成] タブに移動して、次のオプションを設定します。
  1. [アプリケーションアクセス] で [アプリアクセスのみ] を選択します。そうすることで、アプリケーションが固有のサービスアカウントコンテンツに制限されます。これは、Box Viewの標準的な構成です。
  2. [アプリケーションスコープ] で、少なくとも、以下のオプションを有効にします。
    • [Boxに格納されているすべてのファイルとフォルダの読み取り] (root_readonly)
    • [Boxに格納されているすべてのファイルとフォルダの読み取りと書き込み] (root_readwrite)
  3. アプリケーションが (例えばBox UI Elementsを使用して) フロントエンドのブラウザコードからAPIコールを実行する場合は、[構成] タブの下部にあるCORS許可リストにドメインを追加します。
  4. [構成] タブから資格情報をコピーします。
    • CCGの場合、[クライアントID] と [クライアントシークレット] をコピーします。シークレットを確認するには、多要素認証が必要です。
    • JWTの場合、公開/秘密キーペアを生成した後にJSON構成ファイルをダウンロードします。

アプリケーションの承認

サーバーで認証されたPlatformアプリは、APIコールを実行する前に、管理者の承認が必要です。
  1. 開発者コンソールで [承認] タブに移動します。
  2. [確認して送信] をクリックします。企業のBox管理者には、管理コンソールでアプリケーションを承認するためのメールが送信されます。詳細については、Platformアプリの承認ガイドを参照してください。
アプリが承認される前にAPIコールを実行しようとすると、次のエラーが表示されます:

アクセストークンの取得

アクセストークンを取得するプロセスは、アプリケーションの認証方法によって異なります。

クライアント資格情報許可 (CCG) で認証されるPlatformアプリ

クライアントIDとクライアントシークレットをトークンエンドポイントに送信することで、アクセストークンをリクエストします。トークンはアプリケーションのサービスアカウントとして認証されます。
cURL
curl -X POST https://api.box.com/oauth2/token \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "grant_type=client_credentials" \
  -d "box_subject_type=enterprise" \
  -d "box_subject_id=YOUR_ENTERPRISE_ID"
レスポンスには、有効期間が約60分間のアクセストークンが含まれています。
Response
{
  "access_token": "c3FIOG9vSGV4VHo4QzAy...",
  "expires_in": 4169,
  "restricted_to": [],
  "token_type": "bearer"
}
アプリケーションは現在のトークンの有効期限が切れる前に、新しいトークンをリクエストする必要があります。すべてのBox SDKはこれを自動的に処理します。
from box_sdk_gen import BoxClient, BoxCCGAuth, CCGConfig

auth = BoxCCGAuth(
    config=CCGConfig(
        client_id="YOUR_CLIENT_ID",
        client_secret="YOUR_CLIENT_SECRET",
        enterprise_id="YOUR_ENTERPRISE_ID",
    )
)
client = BoxClient(auth=auth)

JWTで認証されるPlatformアプリ

アプリケーションでJWT認証を使用している場合は、設定中にダウンロードしたJSON構成ファイルを使用します。
from box_sdk_gen import BoxClient, BoxJWTAuth, JWTConfig

jwt_config = JWTConfig.from_config_file("/path/to/config.json")
auth = BoxJWTAuth(config=jwt_config)
client = BoxClient(auth=auth)
JWTの設定の詳細については、JWT認証のガイドを参照してください。

クライアント側で使用するトークンのダウンスコープ

アクセストークンをブラウザに渡す必要がある場合は (例えば、Box Content Previewや他のBox UI Elementsを実行する場合)、必ず最初にトークンをダウンスコープしてください。ダウンスコープを行うと、新しいトークン用のフル権限を持つトークンが、制限付きの権限とファイルレベルのスコープ (省略可) に置き換えられます。
cURL
curl -X POST https://api.box.com/oauth2/token \
  -d "subject_token=YOUR_ACCESS_TOKEN" \
  -d "subject_token_type=urn:ietf:params:oauth:token-type:access_token" \
  -d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
  -d "scope=item_preview" \
  -d "resource=https://api.box.com/2.0/files/FILE_ID"
ダウンスコープされたトークンは、有効期間が短く、指定されたスコープとファイルに制限されます。クライアント側のコードでは、元のアクセストークンの代わりに、このダウンスコープされたトークンを使用してください。 次の表には、Box Viewの一般的なダウンスコープ用のスコープを示しています。
スコープ説明
item_previewファイルのプレビュー
item_downloadファイルをダウンロード
base_preview基本的なプレビュー (Box Content Preview UI Element)
annotation_edit注釈の編集と削除
annotation_view_allすべての注釈の表示
ダウンスコープ用のスコープの詳細な一覧については、スコープのガイドを参照してください。

セキュリティのベストプラクティス

Platformアプリの安全性を確保するために、以下のガイドラインに従ってください。
  • クライアントシークレットまたはアクセストークン全体をクライアント側のコードで公開しないようにしてください。トークンは、ブラウザに送信する前に常にダウンスコープします。
  • 資格情報は安全に保存します。クライアントID、クライアントシークレット、Enterprise IDには、環境変数またはシークレットマネージャを使用してください。
  • 企業全体でのコンテンツアクセスが特に必要でない限り、[アプリケーションアクセス] は [アプリアクセスのみ] に設定しておきます。
  • 必要なCORSドメインのみを追加します。許可リストは、ブラウザ側のAPIコールを実際に実行するドメインに制限してください。

従来のアクセス制限付きアプリ

アクセス制限付きアプリでは、アプリトークン認証を使用します。アプリトークン認証では、開発者コンソールで手動で生成された、有効期間の長い固定のトークンペア (プライマリおよびセカンダリ) が提供されます。この方法は、プログラムによるトークン管理、自動更新、全Box APIへのアクセスが可能なCCGおよびJWT認証に置き換えられつつあります。既存のアクセス制限付きアプリを使用している場合は、以下の手順に従って、新しいCCGまたはJWT認証アプリにコンテンツを移行してください。
  1. 上記の手順に従って、CCGまたはJWTを使用する新しいPlatformアプリを作成します。
  2. コンテンツを新しいアプリのサービスアカウントに再アップロードします。または、コラボレーションを使用して既存のコンテンツを共有します。
  3. ハードコードされたアプリトークンを、プログラムによるCCGまたはJWTトークンの取得に置き換えます。
  4. ダウンスコープされたトークンのコールを更新します。フローは同じで、の値のみが変わります。
ファイルのアップロード、プレビュー、埋め込みのワークフローは、認証方法に関係なく同じです。アクセストークンの交換以外に、iframeの埋め込みやBox UI Elementのコードに変更は必要ありません。