テレビ側に短いコードとURLを表示し、ユーザーは操作しやすい端末でログインして承認します。テレビは承認が終わったかを一定間隔で確認します。
はじめに / 全体の流れ
このフローで、
何をするの?
このフローのゴール
文字入力が難しいテレビやCLIを、スマートフォンなど別の端末から認可します。
テレビに表示された引換番号をスマートフォンの受付へ見せて、テレビ用の利用許可を受け取るイメージです。
承認された端末だけがアクセストークンを受け取り、APIを利用できるようになります。
登場人物
図では、縦の列ごとに担当者やシステムを分けています。
Operator
処理を開始する人や運用システムです。フローによっては途中から登場しません。
Client
ユーザーに代わって認可を依頼し、許可されたAPIを呼び出すアプリです。
Authorization
ログイン、同意、コードやトークンの発行を担当する信頼できるサーバーです。
Resource
アクセストークンを確認して、許可されたデータや機能を提供するAPIです。
図の読み方: 光る丸が今説明している通信です。自動再生を止めたいときは「Pause」を押し、気になる矢印を選んでください。
OOperatorResource Owner
CClientApplication
AAuthorizationToken Service
RResourceProtected API
01
Client → Authorization
デバイスコードを要求
このステップで行うこと端末がclient_idとscopeをDevice Authorization Endpointへ送ります。
REQUEST / RESPONSE EXAMPLEDevice → Device Authorization Endpoint
REQUEST
POST /oauth2/device_authorization
Content-Type: application/x-www-form-urlencoded
Accept: application/json
client_id=tv-client&scope=openid%20profileレスポンス
HTTP/1.1 200 OK
Content-Type: application/json
Accept: application/json
{
"device_code": "GmRhmhcxhwAzkoEqiMEg...",
"user_code": "WDJB-MJHT",
"verification_uri": "https://auth.example/device",
"expires_in": 1800,
"interval": 5
}※ トークン、challenge、Credential IDなどは説明用に短縮したサンプル値です。
Related flows