Table of Contents
RFC 8628 (OAuth 2.0 Device Authorization Grant) は、2019 年 8 月に Proposed Standard になった仕様です。 Web ブラウザ非搭載のデバイスや、文字入力が困難なデバイスが API クライアントとなる場合に、ユーザーの承認に基づいてアクセストークンを発行する認可フロー(デバイスフロー)を定義しています。
デバイスフローでは以下の状態を前提としています。
フローの概要は以下の通りです。
user_code
: ユーザーを経由して認可サーバーに提示されます。device_code
: クライアントがトークンリクエストを行う際に使用します。user_code
をユーザーに提示します。device_code
を含むトークンリクエストを行います。これは基本的にはトークン(あるいはエラー)が返却されるまでポーリングすることになります。user_code
の入力を行った上で、クライアントに対するアクセス付与を許可します。user_code
の検証を行い、その user_code
に対応する device_code
を含むトークンリクエストへのトークンレスポンスとして、アクセストークンを発行します。以上のフローによってクライアントはアクセストークンを取得し、以降の API アクセスを行うことになります。
Authlete はバージョン 2.1 以降でデバイスフローをサポートしています。 このバージョンにて新規追加・機能拡張された以下の Authlete API を活用し、デバイスフローに対応した認可サーバーをシンプルに実装可能です。
/device/authorization
API (新規)
user_code
や device_code
を含む「デバイス認可レスポンス」の内容を生成して、認可サーバーに返却します。/device/verification
API (新規)
user_code
を検証します。/device/complete
API (新規)
/auth/token
API のレスポンスに作用します。/auth/token
API (機能拡張)
grant_type=urn:ietf:params:oauth:grant-type:device_code
と、同グラントタイプにおける device_code
に対応する機能が拡張されています。デバイスフローの処理の設定はサービス管理者コンソールから行います。