Box APIの認証について教えてください。

Moderator

Box APIの認証について教えてください。

Box APIには2種類の認証方式があります。

今回はそれぞれの認証方式の概要について説明したいと思います。

 

1. Oauth 3 legged認証

 - Oauthの仕組みについてはこの記事がとてもわかり易いです。

2. JWT認証

 - RFC7519

 

Oauthは、アプリと認証を行ったユーザー権限でアクセス出来る方式になります。

Box SyncやBox Driveで初めてログインするときのことを思い出していただければと思いますが、最初、Boxのログイン情報を入れるよう求められるかと思います。

 

 

 

認証が通おるとユーザーのアクセス権限でファイルがエクスプローラー上に表示されます。

ユーザーの認証情報を対話的に求めて、アクセストークンを取得するパターンです。

https://ja.developer.box.com/reference#oauth-2-overview

 

 

一方で、JWT認証は予め暗号キーペアをBox上にアップロードしておき、鍵を持っているアプリであれば認証出来る認証方式になります。

今回は詳しく説明しませんが、詳細はこちらにあります↓

https://ja.developer.box.com/docs/authenticate-with-jwt

JWTアプリを使う場合、予めboxアプリを識別する固有IDであるClientIDをBoxテナントに承認しておく必要があります。app.jpg

 

JWTアプリをテナントに登録すると、登録したアプリケーションごとにService Accountが自動的に登録されます。

Boxが自動的に以下のようなメールアドレスを持っているユーザーを払い出します

AutomationUser_xxxxxxx@boxdevedition.com

Service Accountとは、JWTアプリケーションの管理者です。ただし、API経由でしかアカウントにアクセスできません。ログインパスワードを保有していませんので、Web UI経由ではアクセスできません。

予め作った鍵を持っているアプリだけがこのユーザーアカウントにアクセス可能です。

また、Service Accountは管理コンソールのユーザー一覧に表示されません。

 

さて、BoxテナントにJWTアプリを登録すると、アプリ名の横にApp Userと呼ばれる欄が出来ているかと思います。

appuser.jpg

 

App UserとはJWTアプリに所属する管理ユーザーです。

登録したJWTアプリの鍵でApp User作成APIを発行すると、アプリ下にApp userが作成されます。

 

curl https://api.box.com/2.0/users \
-H "Authorization: Bearer ACCESS_TOKEN" \
-d '{"name": "アプリユーザー1", "is_platform_access_only": true}' \
-X POST

 

作成すると、このようなアカウントが作成されます。AppUser_xxxx_xxxx@boxdevedition.com

App UserもService Account同様API経由でしかアクセスできません。ただしService Accountと違って、ユーザー一覧に表示されます。

 

Service AccountはServer to Serverアプリなどバッチ処理とか自動化作業に向いています。

Box CLIはService Accountを使用して動いています。

 

App Userは、アプリケーションのバックエンドで使用することを想定して開発されました。

実際のエンドユーザーにはBoxを使っていることを意識させずにセキュアにドキュメントやりとりすることを想定しています。

たとえば:銀行のインターネットバンキングアプリケーション。銀行明細やローンの申請書などをデジタルにやりとりをさせたいといった場合、各ユーザーにBoxのアカウントを取ってもらうわけにもいけません。

そこでApp Userを各銀行口座のアカウントに結びつけておき、ユーザーが自分の口座にアクセスすると、裏側でApp Userのアカウントを使用して、ユーザーにBoxのことを全く意識させずに書類のやりとりが実現出来ます。

 

Service AccountとApp Userの使い分けはこちらのドキュメントに詳しく記載されています。

 

ご質問、ご意見などありましたらお気軽にコメント欄にてお知らせください!