资源服务器获取用户信息,如何从OAuth2授权服务器/用户端点获取自定义用户信息...

小编典典

解决方案是自定义的实现 UserInfoTokenServices

只需将你的自定义实现提供为Bean,它将使用它而不是默认的实现。

在此UserInfoTokenServices内部,你可以构建所需的对象principal。

此UserInfoTokenServices用于从/users授权服务器的端点的响应中提取UserDetails 。如你所见

private Object getPrincipal(Map map) {

for (String key : PRINCIPAL_KEYS) {

if (map.containsKey(key)) {

return map.get(key);

}

}

return "unknown";

}

PRINCIPAL_KEYS默认情况下,仅提取中指定的属性。那正是你的问题。你不仅要提取用户名或你的属性命名的内容,还需要提取更多信息。因此,寻找更多的钥匙。

private Object getPrincipal(Map map) {

MyUserDetails myUserDetails = new myUserDetails();

for (String key : PRINCIPAL_KEYS) {

if (map.containsKey(key)) {

myUserDetails.setUserName(map.get(key));

}

}

if( map.containsKey("email") {

myUserDetails.setEmail(map.get("email"));

}

//and so on..

return myUserDetails;

}

Wiring:

@Autowired

private ResourceServerProperties sso;

@Bean

public ResourceServerTokenServices myUserInfoTokenServices() {

return new MyUserInfoTokenServices(sso.getUserInfoUri(), sso.getClientId());

}

2020-04-15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值