2016-01-15 2 views
0

У меня есть сервер авторизации, который на основе имени пользователя и пароля извлекает данные пользователя из БД вместе с ролями.получить роль пользователя в сервере ресурсов с сервера авторизации

Теперь, когда я получаю доступ к защищенному ресурсу на сервере ресурсов (передавая access_token), я хочу разрешить оставшийся вызов на основе роли. Как это сделать? Потому что, в то время как я проверяю Основной пользователь в сервере ресурсов, его получение по умолчанию [ROLE_USER]

//Will @preAuthorize() work here ? 
@RequestMapping(value="/pinaki", method=RequestMethod.GET) 
public String home(Principal principal) { 
    return "Hello World"; 
} 

Пожалуйста guide..Thanks с заранее

ответ

2

AFAIK весна-безопасность oauth2 поддерживает только получение пользователя детали (включая роли) для сервера авторизации/сервера Ressource, которые совместно используют общий хранилище данных (либо базу данных, либо в памяти) из коробки.

Если у вас есть общий хранилище данных, вы можете использовать InMemoryClientDetailsService или JdbcClientDetailsService.

Однако это не должно быть слишком сложно продлить это самостоятельно, если в вашей установке нет общего хранилища данных. Ключевыми интерфейсами для этой задачи являются ClientDetailsService и ResourceServerTokenServices.

Реализация ResourceServerTokenServices возвращает OAuth2Authentication, включая роли. Таким образом, вы можете вызвать конечную точку tokeninfo с сервера авторизации здесь. Реализация ClientDetailsService и использование этого будет более элегантным. Здесь также вам нужно будет вызвать конечную точку tokeninfo.

В конфигурации XML вы можете настроить bean-компоненты для использования в теге oauth: resource-server в параметрах token-services-ref и auth-details-source-ref. Подробная информация о конфигурации Java можно найти на странице http://projects.spring.io/spring-security-oauth/docs/oauth2.html

(Моя информация относится к версии 2.0.8 весна-безопасности-OAuth2)

Смежные вопросы