Пользовательский принципал и области применения Spring OAuth 2.0 - PullRequest
0 голосов
/ 01 октября 2018

Я использую SpringBoot 2.0.5 и Spring Security OAuth для реализации сервера OAuth 2.0 и набора клиентских микросервисов.

В AuthServer:

  1. Я реализовал UserDetailsService, чтобы я мог предоставить свой пользовательский обогащенный принципал.
  2. Для конечной точки контроллера userInfoUri я возвращаю пользователя (моего принципала) и полномочия в виде карты.

В клиенте:

  1. Я реализовал PrincipalExtractor для извлечения и создания своего собственного принципала.
  2. Для каждого из методов, которые мне требуются, я использую следующие обозначения:

    public List<Message> listMessages(@AuthenticationPrincipal MyPrincipal user)

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

Например, если я хочу иметь метод контроллера, доступный только другому серверу (используя client_credentials), я помечаю метод следующей аннотацией:

@PreAuthorize("#oauth2.hasScope('trust')")

Но это приводит кв ошибке доступа, поскольку я думаю, что область не передается.Я добавил область к конечной точке userInfoUri, но не уверен, что мне нужно делать на стороне клиента, чтобы область была выбрана.

Любые указатели или примеры кода будут очень благодарны.

...