SpringSecurity OAuth2怎样自定义ClientDetails
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇文章为大家展示了SpringSecurity OAuth2怎样自定义ClientDetails,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。最近在做Spr
千家信息网最后更新 2026年11月04日SpringSecurity OAuth2怎样自定义ClientDetails
本篇文章为大家展示了SpringSecurity OAuth2怎样自定义ClientDetails,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
最近在做SpringSecurityOAuth3的自定义ClientDetails目前实现了两种方式
实现 ClientDetailsService 并把值传入BaseClientDetails然后返回
@Override public ClientDetails loadClientByClientId(String clientId) throws ClientRegistrationException { AuthClient authClient = authClientService.loadClientByClientId(clientId); BaseClientDetails details = new BaseClientDetails(authClient.getClientId(), authClient.getResourceIds(), authClient.getScopes(), authClient.getAuthorizedGrantTypes(), authClient.getAuthorities(), authClient.getRedirectUris()); details.setClientSecret(authClient.getClientSecret()); return details; }先实现ClientDetails 然后再实现 ClientDetailsService
ClientDetails
public class MyClientDetails implements ClientDetails { private AuthClientDetails client; public MyClientDetails(AuthClientDetails client) { this.client = client; } public MyClientDetails() { } /** * The client id. * * @return The client id. */ @Override public String getClientId() { return client.getClientId(); }......ClientDetailsService
@Override public ClientDetails loadClientByClientId(String clientId) throws ClientRegistrationException { AuthClientDetails clientDetails = authClientDetailsMapper.selectClientDetailsByClientId(clientId); if (clientDetails == null) { throw new ClientRegistrationException("该客户端不存在"); } MyClientDetails details = new MyClientDetails(clientDetails); return details; }相对而言,第二种方式灵活性会高很多,在使用过程中遇到一个问题使用最简依赖的自定义ClientDetails 无法返回token,并且返回的是空值。 ClientDetailsUserDetailsService 的loadUserByUsername 方法 报错 
经过debug分析,问题出来在了自定义的ClientDetails的权限集合返回值的问。
出错写法
@Override public CollectiongetAuthorities() { return (client.getAuthorities() != null && client.getAuthorities().trim().length() > 0) ? AuthorityUtils.commaSeparatedStringToAuthorityList(client.getAuthorities()) : null; }
该写法会导致Cannot pass a null GrantedAuthority collection 错误,无法生存token但是不会有任何的报错
正确写法
@Override public CollectiongetAuthorities() { return (client.getAuthorities() != null && client.getAuthorities().trim().length() > 0) ? AuthorityUtils.commaSeparatedStringToAuthorityList(client.getAuthorities()) : Collections.emptyList(); }
上述内容就是SpringSecurity OAuth2怎样自定义ClientDetails,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
写法
内容
技能
方式
知识
问题
简明
简明扼要
客户
客户端
就是
文章
方法
更多
权限
灵活性
相对而言
篇文章
行业
资讯
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技会
百单互联网科技有限公司
壹账通互联网科技
互联网科技视频素材
互联网科技股午盘股票涨跌
老年人脱离互联网科技的作文
世界互联网科技公司市值排名
注册互联网科技公司经营范围大全
坤平互联网科技
996高科技互联网公司
东莞新华互联网科技学校
科技互联网海报
互联网时代的科技公司
广东工业互联网大赛深圳学泰科技
中天科技中国工业互联网
风投北京互联网科技
互联网领先科技活动
平安好医生打造互联网科技医疗
网互联网络科技
银川新华互联网科技学校招聘
青岛互联网科技公司
互联网 科技创业
以房互联网科技
亿策互联网科技
重庆科技学院互联网
互联网教育科技公司vipkid
互联网时代科技改变生活
互联网科技创新的路径
现代科技的标志之一的互联网
小牛互联网科技有限公司地址