OAuth for Browserless and Input Constrained Devices
OAuth 2.0 “Device Flow” расширение позволяет использовать OAuth на девайсах, которые имеют выход в интернет, но не могут открыть браузер (например, расширения для TV).
Обычно, девайс говорит пользователю открыть какую-то ссылку на стороннем девайсе (например, на телефоне через чтение QR-кода) и получает access-токен таким образом.
Authorization Request
Девайс делает запрос к серверу авторизации для получения device code параметра:
POST /token HTTP/1.1
Host: authorization-server.com
Content-type: application/x-www-form-urlencoded
client_id=a17c21ed
Некоторые сервера авторизации позволяют добавлять параметр scope, который будет показан пользователю.
Сервер возвращает сссылку, куда перенаправить пользователя и user_code для него.
Пока пользователь не подтвердит доступ, девайс будет стучать на сервер авторизации со своим device_code с заданным сервером interval, пока сервер не вернет статус, отличный от error = authorization_pending.
Пример запроса:
Если пользователь откажет в доступе, сервер вернет error = access_denied. Если токен истек — получим error = expired_token.
Если все ОК:
Security
user_code должен быть не подвержен бруту, для запроса подтверждения доступа со стороны пользователя должен быть установлен rate limit.