Spring Security request.getUserPrincipal()始终为null

时间:2017-09-08 15:27:11

标签: java spring spring-security

在我们的应用程序中观察到一个非常奇怪的情况(具有所有默认BOM依赖性的Spring Boot 1.5.6):您可以完美地登录(使用AbstractPreAuthenticatedProcessingFilter),但这仍然会留下Principal请求null!即request.getUserPrincipal()nullSecurityContextHolder.getContext().getAuthentication()不是!

这又会影响我们的健康端点敏感的能力:它使用Principal(参见 HealthMvcEndpoint.exposeHealthDetails(HttpServletRequest,Principal)),它由{{1}注入},然后从请求中获取它......

看起来我错过了一些简单的东西,但仍然无法找到它:(

1 个答案:

答案 0 :(得分:5)

因此,在创建一个新的Spring Boot应用程序并将其调试到它的内部之后,我发现没有人真正将Principal设置到请求中。将Spring包装成另一个使用Spring SecurityContext进行上述(以及其他一些方法)的Spring。这个包装是由SecurityContextHolderAwareRequestFilter完成的,默认情况下是这样(见HttpSecurity.servletApi())...

但有人已禁用我们项目的默认Spring Security配置,因此过滤器不在那里!