入力制約を回避する
リモコンやCLIで長いパスワードを入力せず、普段利用するスマートフォンの安全なブラウザでログインできます。
Specification
テレビ、ゲーム機、CLIなどブラウザや入力能力が限られる端末を、別端末のブラウザで認可する拡張仕様です。
Overview
Device Authorization Grantは、テレビ、ゲーム機、プリンター、CLIのように、文字入力やブラウザ操作が難しい端末を認可するためのOAuth 2.0拡張です。認可を必要とする端末と、ユーザーがログインする端末を分けます。
対象端末は短いuser_codeとverification_uriを表示します。ユーザーはスマートフォンなど操作しやすい端末でコードを入力して承認し、対象端末は承認結果をToken Endpointへ問い合わせます。対象端末へパスワードを入力する必要はありません。
Purpose and responsibilities
リモコンやCLIで長いパスワードを入力せず、普段利用するスマートフォンの安全なブラウザでログインできます。
user_codeによって、スマートフォン上の承認操作と、認可を待っている対象端末を結び付けます。
対象端末はdevice_codeを使って結果をpollし、承認が終わるまでauthorization_pendingを処理します。
Key concepts
Security considerations
仕様を実装するときは、正常系の通信だけでなく、値のすり替え、再利用、漏えいが起きた場合も考えます。
user_codeとdevice_codeは別の値として扱い、device_codeを画面へ表示しません。
expires_inを過ぎた要求を拒否し、device_codeは一度だけ使用可能にします。
intervalを守り、slow_downを受け取った場合は問い合わせ間隔を延ばします。
承認画面に対象端末、Client名、要求scopeを表示し、ユーザーが意図した要求か確認できるようにします。
Interactive flows
Position and relationship
RFC 8628はRFC 6749の拡張Grantです。OpenID Connectのopenid scopeと組み合わせれば認証にも利用できますが、CIBAとは開始方法が異なります。Device Flowは端末にコードを表示し、CIBAはClientがユーザー識別子を使って別端末へ認証要求を開始します。
Other specifications