OAuth2 client_credentials模式登录报错pre:AuthFilter
作者:陆金龙
发表时间:2022-02-24 05:36
关键词:client_credentials pre:AuthFilter
SpringCloud+SpringSecurity+JWT
client_credentials模式登录后拿到token,请求资源服务接口。
报错如下:
error: "Internal Server Error"
message: "pre:AuthFilter"
status: 500
timestamp: "2022-02-25T00:32:38.671+0000"
查看服务端报错日志:
Caused by: java.lang.NullPointerException: null
at cn.xxx.xxx.zuulgateway.filter.AuthFilter.run(AuthFilter.java:51) ~[classes!/:1.0-SNAPSHOT]
OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) authentication;
Authentication userAuthentication = oAuth2Authentication.getUserAuthentication(); // 这里返回null
String principal = userAuthentication.getName(); // 这里空指针异常
zuulgateway中AuthFilter中根据登录的token试图解析用户信息。但client_credentials是客户端登录模式,没有用户信息的。使用用户信息时出现空指针异常。
解决方案:client_credentials模式登录下对用户权限进行单独处理。