Spring security Spring Security Azure AD重定向url问题
当我尝试在localhost中运行时,效果很好。但是,当我尝试在负载平衡器后面运行相同的程序时,会出现以下错误:Spring security Spring Security Azure AD重定向url问题,spring-security,oauth-2.0,azure-active-directory,spring-security-oauth2,Spring Security,Oauth 2.0,Azure Active Directory,Spring Security Oauth2,当我尝试在localhost中运行时,效果很好。但是,当我尝试在负载平衡器后面运行相同的程序时,会出现以下错误: AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the application: '<clien-id>'. AADSTS50011:请求中指定的回复URL与为应用程序“”配置的回复URL不匹配。 我已经用负载平衡器URL在
AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the application: '<clien-id>'.
AADSTS50011:请求中指定的回复URL与为应用程序“”配置的回复URL不匹配。
我已经用负载平衡器URL在AzureAD注册了应用程序。但是当我发送请求时,重定向URL仍然是localhost,如下所示
我希望我的应用程序插入负载平衡器URL作为redirect_URL的值(而不是localhost)
我尝试了下面建议的解决方案,但仍然没有成功:
提前感谢。使用负载平衡器/代理时,需要添加一些额外的配置,以便能够正确解析重定向URL 负载平衡器通常应用标准,如
X-Forwarded-Proto
和X-Forwarded-Host
。在这种情况下,应在应用以下两种配置后正确计算重定向url。(Tomcat场景的示例)
“如果代理添加常用的X-Forwarded-For和
X-Forwarded-Proto标头,将server.forward-headers-strategy设置为
本地人足以支持这些。”
如果您正在使用Tomcat并在代理上终止SSL,
server.tomcat.redirect-context-root应设置为false。这
允许在任何重定向之前遵守X-Forwarded-Proto标头
都被执行了
如果您在Spring Security中的客户端配置中为基本URL使用占位符,例如{baseUrl}/login/oauth2/code/{registrationId}
,则上述配置有效。通过这种方式,{baseUrl}
占位符由Spring Security动态解析,这取决于它是否在负载平衡器后面(https://your-lb-url.com
vshttp://localhost:8080
)
官方文件中的更多信息:
server.forward-headers-strategy=NATIVE
server.tomcat.redirect-context-root=false