您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

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

private Object getPrincipal(Map<String, Object> map) {
    for (String key : PRINCIPAL_KEYS) {
        if (map.containsKey(key)) {
            return map.get(key);
        }
    }
    return "unkNown";
}

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

private Object getPrincipal(Map<String, Object> 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());
}
其他 2022/1/1 18:28:51 有504人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶