Использование областей в качестве ролей в Spring Security OAuth2 (поставщик)

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

Некоторые пользователи могут читать и писать статьи, в то время как другие могут только читать их. В Spring Security (3.2.1) я смоделировал это, имея две роли:

ROLE_WRITE: эта роль предоставляет пользователям доступ к написанию сообщений.ROLE_READ: эта роль предоставляет пользователям доступ к чтению сообщений.

Реализация этого с помощью безопасности Spring довольно проста ...

Теперь я хочу также разрешить сторонним приложениям читать и писать сообщения от имени пользователей, внедряя поставщика OAuth2 с помощьюSpring Security OAuth (версия 2.0.0.M3 ATM).

На этапе авторизации приложение спрашивает пользователя, хотят ли они предоставить право читать и / или писать сообщения от своего имени. Пользователь здесь предоставляет области действия (не роли).

Затем, когда потребитель OAuth2 вызывает мой REST API, Spring Sec OAuth авторизует предоставленный токен и создает аутентификацию, содержащую пользователя со всеми его ролями и только предоставленными областями.

Проблема (и вопрос) заключается в том, что теперь мне нужно написать другую логику безопасности в зависимости от того, вызывается ли API пользователем, прошедшим обычную аутентификацию (просто проверьте роли), или он вызывается через OAuth2 (проверьте роли + области).

Можно ли «объединить» понятия ролей и областей в Spring Security OAuth2, чтобы на этапе авторизации пользователь предоставил приложению подмножествороли они есть (и аутентификация OAuth2 только сообщает об этом в предоставленных полномочиях)? Таким образом, когда стороннее приложение выполняет вызов API, роли при аутентификации предоставляются? Таким образом, мне не нужно писать какую-либо логику безопасности для OAuth2.

Ответы на вопрос(2)

Ваш ответ на вопрос