Java Spring安全性中的哪个类/方法处理重定向到/oauth2/authorization/{registrationId}?需要为容器重写
我们正在网关后面的docker容器中部署API。网关背后的一切都是http,而不是https。因此,当Spring Security尝试将用户重定向到授权Uri时,它会将用户重定向到http,http抛出404。(因为当重定向命中用户的浏览器时,浏览器无法在http上找到它,只能在https上找到它) 我无法找到发生此重定向的位置。例如,如果用户转到Java Spring安全性中的哪个类/方法处理重定向到/oauth2/authorization/{registrationId}?需要为容器重写,java,spring,spring-boot,spring-security,spring-security-oauth2,Java,Spring,Spring Boot,Spring Security,Spring Security Oauth2,我们正在网关后面的docker容器中部署API。网关背后的一切都是http,而不是https。因此,当Spring Security尝试将用户重定向到授权Uri时,它会将用户重定向到http,http抛出404。(因为当重定向命中用户的浏览器时,浏览器无法在http上找到它,只能在https上找到它) 我无法找到发生此重定向的位置。例如,如果用户转到https://thecompany.com/securedpage,Spring Security发现它们没有经过身份验证(没有JWT),一些代码
https://thecompany.com/securedpage
,Spring Security发现它们没有经过身份验证(没有JWT),一些代码将重定向到/oauth2/authorization/{regsitrationId}
我找到了执行解析的位置(OAuth2AuthorizationRequestRedirectWebFilter.filter(ServerWebExchange exchange、WebFilterChain)
但我似乎找不到重定向发生的位置。我沿着安全文件管理器链走了一路,但即使在最后一条链上,重定向响应中也没有标题,也没有状态为302
如何覆盖重定向以强制使用https?您是否遵循spring安全文档中的“配置网关”一章
您需要通过设置X-Forwarded头并在应用程序中配置ForwardedHeaderFilter,使应用程序了解该配置(https-->网关-->http-->您的应用程序)您使用的网关是什么?网关应该解决此问题,而不是应用程序服务器。您使用的是WebFlux吗?@NatFar是的,我使用的是WebFlux