Spring Oauth2 SSO: использование полномочий, предоставленных AuthorizationServer

Моя установка — это AuthorizationServer, где я аутентифицируюсь по ldap. Когда я запрашиваю пользователя с сервера авторизации напрямую, у него есть определенные полномочия в зависимости от группы ldap.

Когда я смотрю на Oauth2Authentication в ResourceServer во время отладки, только userAuthentication.details.authorities имеет эти полномочия. Для любых других полномочий установлено значение ROLE_USER.

Можно ли использовать полномочия пользователя, предоставленные AuthorizationServer?

Если я использую spring.oauth2.resource.tokenInfoUri для получения полномочий, это работает. Но я хочу использовать UserDetails, предоставленные AuthorizationServer.


person Yannic Klem    schedule 09.07.2015    source источник


Ответы (1)


Решение состояло в том, чтобы создать собственный UserInfoTokenServices as и предоставить его, как я объяснил в ответе на очень похожий вопрос.

В этом UserInfoTokenServices мне удалось извлечь полномочия из ответа /usersendpoint сервера авторизации.

!!ОБНОВЛЕНИЕ!! С Spring Boot 1.4.0 все становится проще!

С Spring Boot 1.4.0 a PrincipalExtractor. Этот класс должен быть реализован для извлечения пользовательского принципала (см. Примечания к выпуску Spring Boot 1.4).

Если речь идет только о полномочиях, вы можете реализовать AuthoritiesExtractor.

person Yannic Klem    schedule 15.07.2015