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 ничего не знает о ваших пользовательских полях...