Alexiuscrow
@Alexiuscrow

Как различать устройства запрашивающие токен на OAuth2 сервере?

Есть веб-приложение для выдачи токенов клиентам (OAuth2), где реализован тип авторизации "authorization сode".
На данный момент при каждом обращении клиента (приложения), желающего заполучить токен для использования resource api от имени одного пользователя - выдаётся новый токен (независимо от того с какого устройства был произведён запрос).

Что необходимо сделать. Добавить возможность выдачи разных токенов для одного и того же клиента желающего заполучить доступ к resource api от имени одного и того же пользователя, но производящего запрос с разных устройств.

Пример. Установленное на домашнем компьютере приложение "ClientApp" желает получить токен для доступа к веб-сервису "PhotoService" от имени пользователя "Max". Для этого приложение "ClientApp" обращается к авторизационному сервису "OAuth2Service" для получения токена, с которым в дальнейшем будет обращаться к "PhotoService". В итоге "ClientApp" всё же получает токен. Когда установленное на рабочем компьютера приложение "ClientApp" попытается получить токен у "OAuth2Service" то ему должен быть отдан новый токен, в то время как старый токен полученный во время использования домашнего компьютера должен остаться действительным. То есть токен должен быть привязан к устройству с которого был произведён запрос, клиенту (client_id) и пользователю, от имени которого клиент будет использовать resource api. Для оного и того же устройства, одного и того же клиента, одного и того же пользователя должен возвращаться новый токен, а старый должен быть не действителен.

Как различать устройства с которых был произведён запрос?

Есть соображения, что можно использовать User-Agent из хедера (пример: "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0"), но на разных устройствах может быть установлена одна и та же версия браузера, ОС. К тому же параметра "User-Agent" может и не быть во время обращения к авторизационному сервису.
Вариант #2 - передавать описание устройства в параметре во время обращения к авторизационному сервису. Такой реализации ранее не встречал, по этому такой подход вызывает сомнения.

Для реализации OAuth2 приложения используется Apache Oltu.
  • Вопрос задан
  • 533 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽