Краткое введение в поток устройства OAuth 2.0
Эта статья исследует поток устройства OAuth 2.0, решение для аутентификации личности на устройствах, которые либо не имеют браузера для выполнения авторизации на основе агента пользователя, либо ограничены в вводе, описывая его назначение и поток взаимодействия с пользователем.
Как рамка авторизации, OAuth 2.0 широко используется в различных сценариях. В потоках аутентификации, предоставляемых OAuth, самым распространенным является Authorization Code Flow. Когда пользователь аутентифицирует свою личность в приложении, используя Authorization Code Flow, приложение откроет браузер с устройства для доступа к конечной точке авторизации, и затем пользователь введет свои идентификаторы (имя пользователя, электронная почта и т.д.) и учетные данные (пароль, код подтверждения и т.д.) для завершения аутентификации.
Однако, когда пользователь пытается использовать приложение на устройстве, которое не имеет браузера или даже возможности вводить свои учетные данные, как мы можем выполнить аутентификацию личности через OAuth 2.0? И здесь на помощь приходит “Device Flow“.
Что такое поток устройства OAuth 2.0
Поток устройства OAuth 2.0 – это реализация протокола OAuth 2.0, предназначенная для поддержки устройств с ограниченными возможностями ввода или отсутствием подходящего браузера. Эти устройства включают смарт-телевизоры, устройства интернета вещей, принтеры и т.д.
Device flow позволяет пользователям инициировать запросы авторизации на указанных устройствах, после чего пользователь может просматривать запрос на авторизацию и завершать авторизацию пользователя через другое устройство с доступом к браузеру и возможностями ввода, такое как смартфон или персональный компьютер.
Кроме того, Device Flow часто используется для CLI инструментов (например, тех, которые предоставляют Stripe, Github, Cloudflare), потому что CLI инструменты часто запускаются в операционных системах без графического интерфейса.
Поток взаимодействия с пользователем при использовании потока устройства
Когда пользователь использует device flow для аутентификации, это в основном включает следующие шаги:
- Клиент устройства запрашивает авторизацию на сервере авторизации с идентификатором клиента (обычно идентификатор клиента на платформе сервера авторизации).
- Сервер авторизации отвечает клиенту устройства с кодом устройства, кодом пользователя и URI подтверждения.
- Клиент устройства отображает URI подтверждения и код пользователя в виде текста (или QR кода и т.д.), инструктируя пользователя посетить URI и ввести код.
- В то же время, как на шаге 3, клиент устройства начинает опрос для получения токенов доступа с использованием кода устройства и идентификатора клиента от сервера авторизации и ожидает, когда пользователь просмотрит запрос на авторизацию и завершит авторизацию пользователя.
- Пользователь посещает URI подтверждения, размещенный сервером авторизации, через браузер на другом устройстве, и вводит код пользователя.
- Сервер авторизации перенаправляет пользователя на страницу входа и инструктирует пользователя завершить вход в систему.
- Пользователь завершил процесс входа и успешно вошел в систему.
- Сервер авторизации перенаправляет пользователя на страницу успешного входа и инструктирует пользователя закрыть браузер.
- В то же время, как на шаге 8, сервер авторизации возвращает клиенту устройства токены доступа, поскольку клиент опрашивал с шага 4.
После этих процессов клиент устройства сможет получить токен доступа для последующих сервисов!
Резюме
Как вы заметили, поток устройства OAuth 2.0 предоставляет удобный метод входа для устройств, лишенных легких возможностей ввода или браузера. Это важно для таких устройств, как смарт-телевизоры, устройства интернета вещей, и CLI инструменты, которые запускаются на устройствах без графических интерфейсов.
Вас ждут захватывающие новости, поскольку Logto находится в процессе поддержки функции потока устройства. Следите за обновлениями, и мы будем держать вас в курсе последних новостей.