Spring OAuth访问UserDetails

时间:2015-07-25 19:52:44

标签: spring spring-mvc oauth spring-security spring-security-oauth2

有没有办法在资源服务器中访问OAuth UserDetails?

在OAuth服务器上,我将返回自定义用户详细信息

http://localhost:9999/uaa/user

@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定义了可用于将身份验证对象注入Spring MVC控制器/休息端点的方便@AuthenticationPrincipal注释,可以使用OAuth身份验证完成相同的操作,还是有任何其他方法可以为处理请求填充UserInfo实例?

2 个答案:

答案 0 :(得分:0)

试试这个:

array([['120', '29.9475077984', '1'],
       ['125', '31.3887667742', '1'],
       ['125', '32.3881706091', '1'],
       ['125', '34.4894481007', '1'],
       ['126', '36.1494551046', '1'],
       ['127', '39.3121447948', '1'],
       ['128', '43.8203811171', '1'],
       ['128', '49.3179066095', '1'],
       ['128', '53.4929489926', '1'],
       ['128', '55.1837748899', '1'],
       ['130', '55.9167038553', '1'],
       ['130', '56.2727376481', '1'],
       ['130', '57.480058071', '1'],
       ['130', '60.3922465138', '1'],
       ['130', '61.2506277637', '1'],
       ['130', '60.5279054759', '1'],
       ['143', '62.139526711', '1'],
       ['143', '65.4147315349', '1'],
       ['143', '72.3278873965', '1'],

答案 1 :(得分:0)

我不确定,但由于Oauth2是描述不同服务器/服务之间的身份验证机制的标准,因此无法提供自定义属性。

假设您的资源服务器支持oauth2授权,并且用户使用FB的身份验证服务器。正如我们所说,它是一个标准,但FB对您的自定义字段一无所知...