SDKを使用したOAuth 2.0

ガイド 認証 OAuth 2.0認証 SDKを使用したOAuth 2.0

SDKを使用したOAuth 2.0

Box SDKには、クライアント側OAuth 2.0のサポートが組み込まれています。

このプロセスでは、ユーザーはブラウザでBoxウェブアプリにリダイレクトされます。そこで、ユーザーはログインし、アプリケーションによる自分のデータへのアクセスを承認すると、アプリケーションのredirect_urlに再度リダイレクトされます。この最後の手順では、ユーザーがアクセス可能な場所にあるウェブサーバー上でアプリケーションが実行されている必要があります。

概要

OAuth 2.0フローを完了するには、以下の手順を完了する必要があります。

  1. Box SDKを構成する
  2. ユーザーをBoxウェブサイトにリダイレクトする
  3. ユーザーがアプリケーションにアクセス権限を付与する
  4. 承認コードをアクセストークンと交換する

このフローが終了すると、アプリケーションには、このユーザーの代わりにAPI呼び出しを実行するために使用できるアクセストークンが用意されます。

OAuth 2.0を介して取得した操作トークンは、もともとアプリケーションを承認したユーザーに関連付けられています。このトークンを使用して実行されるAPI呼び出しはどれも、このアプリケーションから実行されているように見えるため、ユーザーには、アプリケーションがこのトークンを使用してアクセスしようとするファイルやフォルダへのアクセス権限が必要です。

パラメータ

パラメータ説明
CLIENT_IDアプリケーションのクライアントIDまたはAPIキー
CLIENT_SECRETアプリケーションのクライアントシークレットまたはAPIシークレット
REDIRECT_URIユーザーがアプリケーションを承認した後に送信されるアプリケーションのリダイレクトURL。これは開発者コンソールで構成できます。

1. SDKを構成する

最初の手順として、選択したSDKを使用して環境が準備されていることを確認します。

.NET
var redirectUrl = "[REDIRECT_URI]";
var config = new BoxConfig("[CLIENT_ID]", "[CLIENT_SECRET]", new Uri(redirectUrl));
var sdk = new BoxClient(config);
Java
import com.box.sdk.BoxAPIConnection;

String authorizationUrl = "https://account.box.com/api/oauth2/authorize?client_id=[CLIENT_ID]&response_type=code";
Python
from boxsdk import OAuth2

sdk = OAuth2(
    client_id='[CLIENT_ID]',
    client_secret='[CLIENT_SECRET]'
)
Node
var BoxSDK = require("box-node-sdk");

var sdk = new BoxSDK({
  clientID: "[CLIENT_ID]",
  clientSecret: "[CLIENT_SECRET]"
});

ご利用の環境に合わせたSDKのインストールの詳細を確認する

2. ユーザーをリダイレクトする

次に、承認URLにユーザーをリダイレクトします。ほとんどのSDKでは、SDKクライアントの承認URLを取得する方法をサポートしています。

.NET
var authorizationUrl = "https://account.box.com/api/oauth2/authorize?client_id=[CLIENT_ID]&response_type=code";
// redirectTo(authorizationUrl);
Java
String authorizationUrl = "https://account.box.com/api/oauth2/authorize?client_id=[CLIENT_ID]&response_type=code";

// response.redirect(authorizationUrl);
Python
auth_url, csrf_token = sdk.get_authorization_url('[REDIRECT_URL]')

// redirect(auth_url, code=302)
Node
var authorize_url = sdk.getAuthorizeURL({
  response_type: "code"
});

// res.redirect(authorize_url)

ユーザーがURLにリダイレクトされる方法は、使用されるアプリケーションフレームワークによって異なります。このトピックの詳細については、ほとんどのフレームワークのドキュメントで説明されています。

リダイレクトURLは、以下のように手動でも作成できます。

https://account.box.com/api/oauth2/authorize?client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URI]&response_type=code

スコープを制限したり追加の状態を渡したりするためにユーザーをリダイレクトするときに、追加のクエリパラメータを渡すことができます。詳細については、リファレンスドキュメントを参照してください。

3. ユーザーがアプリケーションにアクセス権限を付与する

ユーザーはBoxウェブアプリにリダイレクトされると、ログインする必要があります。ログイン後、ユーザーにはアプリケーションを承認するための画面が表示されます。

OAuth 2.0承認画面の例

ユーザーがこのリクエストを承認し、ボタンをクリックすると、ブラウザは、開発者コンソールで構成されたとおりにアプリケーションのリダイレクトURLにリダイレクトされます。

4. コードを交換する

ユーザーは、有効期間の短い承認コードを含むクエリパラメータが指定されたアプリケーションのリダイレクトURLにリダイレクトされます。

https://your.domain.com/path?code=1234567

このコードはアクセストークンではなく、有効期間はほんの数秒です。SDKを使用すると、このコードを実際のアクセストークンと交換できます。

.NET
var session = await sdk.Auth.AuthenticateAsync("[CODE]");
var client = new BoxClient(config, session);
Java
BoxAPIConnection client = new BoxAPIConnection(
  "[CLIENT_ID]",
  "[CLIENT_SECRET]",
  "[CODE]"
);
Python
oauth.authenticate('[CODE]')
client = Client(oauth)
Node
var code = "...";

sdk.getTokensAuthorizationCodeGrant("[CODE]", null, function(err, tokenInfo) {
  var client = sdk.getPersistentClient(tokenInfo);
});

このフローが終了すると、アプリケーションには、このユーザーの代わりにAPI呼び出しを実行するために使用できるアクセストークンが用意されます。