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模式登录下对用户权限进行单独处理。