Spring security Spring Security Azure AD重定向url问题

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在

当我尝试在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在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
vs
http://localhost:8080

官方文件中的更多信息:


这对您有帮助吗?谢谢你,卡尔。我解码了,这就是我贴在下面的内容。我需要一种在我的Java Spring启动应用程序中定制的方法。您需要在Azure门户和代码中更改重定向uri。如果这两个URL不一样,就会出现错误。是的,我检查了5次,但似乎没有问题。仍在努力..谢谢,有多个问题。配置的URL有一个空格-输入错误。在application.properties中,必须添加以下内容:spring.security.oauth2.client.registration.azure.redirect-uri=
server.forward-headers-strategy=NATIVE
server.tomcat.redirect-context-root=false