Spring OAuth доступ к UserDetails

Есть ли способ получить доступ к OAuth UserDetails на сервере ресурсов?

На сервере OAuth я возвращаю пользовательские данные

HTTP: // локальный: 9999 / UAA / пользователь

@RestController
public class UserInfoResource {

    @RequestMapping("/user")
    public ResponseEntity<UserInfo> account(@AuthenticationPrincipal UserInfo userInfo) {

        return Optional.ofNullable(userInfo)
                .map((usr) -> new ResponseEntity<UserInfo>(usr, HttpStatus.OK))
                .orElse(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
    }
}

Есть ли способ получить доступ к объекту UserInfo на сервере ресурсов? Spring Security определяет удобство @AuthenticationPrincipal аннотация, которая может использоваться для добавления объекта аутентификации в контроллеры Spring / конечные точки отдыха MVC, то же самое можно сделать с аутентификацией OAuth или есть какой-либо другой способ заполнить экземпляр UserInfo для запроса на обработку?

2 ответа

Попробуй это:

  @RestController
        public class UserInfoResource {

            @RequestMapping("/user")
            public ResponseEntity<UserInfo> account(Authentication authentication) {
                UserDetails userDetails = (UserDetails) authentication.getPrincipal();
                return Optional.ofNullable(userInfo)
                        .map((usr) -> new ResponseEntity<UserInfo>(usr, HttpStatus.OK))
                        .orElse(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
            }
        }

Я не уверен но так как Oauth2 это стандарт, который описывает механизм аутентификации между различными серверами / службами, и нет никакого способа предоставить пользовательские свойства.

Допустим, ваш сервер ресурсов поддерживает авторизацию oauth2, а пользователь использует сервер аутентификации FB. Как мы уже говорили, это стандарт, но FB ничего не знает о ваших пользовательских полях...

Другие вопросы по тегам