Настроить ответ Spring Security OAuth 2

В моем приложении Java я использую библиотеку Spring Security OAuth 2 для реализации провайдера OAuth. Ответ на успешную аутентификацию (для типа гранта author_code) выглядит примерно так:

{"access_token": "d179bf70-aa40-4df9-a3e1-440e835c273a", 
"expires_in": "43199", 
"refresh_token": "879e7bd0-5e0f-48a9-b64d-f61d5665bf4e", 
"scope": "read", 
"token_type": "bearer"}

Есть ли способ добавить дополнительные свойства к этому ответу, например. имя пользователя или адрес электронной почты?


person Antonio Dragos    schedule 24.04.2015    source источник
comment
Чего вы пытаетесь достичь, добавляя такие параметры в ответ токена? В соответствии с спецификацией к нему можно добавить дополнительные значения (необходимо проверить Реализация Spring, чтобы знать, разрешают ли они это). Что я бы порекомендовал, и это в документах Spring, так это использовать токены JWT, где вы можете добавить всю необходимую информацию в токен доступа без сохранения состояния (и подписанный). Если JWT является вариантом, я могу указать вам на его хорошие реализации.   -  person jbarrueta    schedule 24.04.2015


Ответы (1)


Spring OAuth2 позволяет вам помещать произвольные значения в OAuth2AccessToken через свойство additionalInfo. Вы можете ввести столько, сколько вам нужно, в AccessTokenConverter (который, в свою очередь, можно легко добавить в DefaultTokenServices с помощью обратных вызовов конфигурации). Я не совсем уверен, зачем вам это нужно, и я бы внимательно рассмотрел ваш вариант использования, прежде чем отправлять дополнительные значения для потребления клиентами (предполагается, что они просто используют значение токена, которое непрозрачно).

person Dave Syer    schedule 06.05.2015
comment
Сценарий использования для этого может заключаться в предоставлении точек входа для API-интерфейсов гипермедиа после аутентификации вместо того, чтобы тратить дополнительный запрос на службу обнаружения, поэтому эта задача имеет большой смысл. - person Ivan Gammel; 21.08.2017
comment
Я могу успешно добавить дополнительные данные для доступа к ответу токена. Но столкнулся с проблемой, что информация в клиентском приложении OAuth2. Любая помощь? Пробовал с Принципалом, OAuth2AuthenticationToken путем внедрения в контроллер. Но не повезло. - person Ravi MCA; 19.12.2019