box で Client Credentials Grant がサポートされたので試す
先日、boxのクライアントアプリの認証に Client Credentials Grant がサポートされたことが発表されました。
これまで、boxのクライアントアプリの認証は以下の2つが提供されていました。
- サーバー認証 (JWT使用)
- ユーザー認証 (OAuth 2.0)
ここに今回 Client Credentials Grant が追加されました。
- サーバー認証 (クライアント資格情報の許可) ⭐️ NEW!!
それではClient Credentials Grant を利用する準備をしていきます。
以下の準備が必要です。
- 2要素認証の設定がされていること
- Client Credentials Grant を利用するカスタムアプリが承認されていること
開発者コンソール(以下URL)にアクセスします。
新しくアプリを作成します。カスタムアプリで作成します。
先ほどの画面が表示されるので、サーバー認証 (クライアント資格情報の許可)
を選択します。
Client Credentials Grant を利用できるアプリが作成されました。
構成 - OAuth 2.0資格情報 に クライアントID と クライアント機密コードが記載されています。
ここでクライアント機密コードを確認する際に2要素認証が必要となります。
あとはこのアプリが利用する環境に応じてアプリケーションアクセスやアプリケーションスコープを設定します。
次にこのアプリの承認が必要となります。一般設定 - アプリの承認 からアプリの承認を行います。
※管理者とアプリ作成者が同じ前提で記載してます。
承認が行われると以下のようになります。これで利用準備ができた状態になります。
先ほど確認したクライアントIDとクライアント機密コードを利用して、以下のサンプルにならって
アクセストークンを取得するリクエストを実行します。
レスポンスからアクセストークンを取得できました。
{
"access_token":"aaa.......zzz",
"expires_in":4183,
"restricted_to":[],
"token_type":"bearer"
}
アクセストークンの有効期限は60分と記載されていますが、それよりも少し長いようです。
サーバからboxに対して処理を実行する場合、これまではキーペアを生成してJWTアサーションを作成して認証する方法をとっていました。
今回のboxのサポートによって、Client Credentials Grant を利用して処理を実行することもできるようになります。
複数の方式に対応したので選択肢としては増えたと思いますが、個人的にはJWTアサーションをそのまま使い続けると思います。
Discussion