栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从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:

@Autowiredprivate ResourceServerProperties sso;@Beanpublic ResourceServerTokenServices myUserInfoTokenServices() {    return new MyUserInfoTokenServices(sso.getUserInfoUri(), sso.getClientId());}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号