大佬教程收集整理的这篇文章主要介绍了带有 Azure AD 的 Spring Security 和反向代理背后的 redirect_uri 问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在网上搜寻我的问题的解决方案,如下所示 -
我们有一个带有 Spring Security OAuth2 和 Azure Active Directory 集成的 Spring boot 应用程序来管理我们的外部身份验证。当我们尝试登录时,登录URL中的redirect_uri是错误的。
redirect_uri 显示为在 application.yaml 和 Azure AD 门户中定义的“&redirect_uri=https://10.10.10.10/v1/login/oauth2/code/”,而是显示为“&redirect_uri=http ://10.10.10.10:8080/v1/login/oauth2/code/”。如您所见,它正在删除 https 方案并添加端口,这导致由于 redirect_uri 不匹配而导致登录错误。需要注意的是,这在本地工作正常,但是当部署到反向代理后面的环境时,它不起作用。
我尝试过的 -
在application.yaml中添加以下属性-
将此添加到路径的 Nginx 配置 -
resolver 127.0.0.11 valID=30s;
set $upstream_be application;
proxy_pass http://$upstream_be:8080;
proxy_set_header X-ForWARDed-For $proxy_add_x_forWARDed_for;
proxy_set_header X-ForWARDed-Proto $scheR_391_11845@e;
proxy_set_header X-ForWARDed-Port $server_port;
proxy_set_header Host $host;
不幸的是,这一切都没有奏效,问题仍然存在。大家有什么想法吗?
相关pom.xml版本:spring-boot、spring-security=2.4.5、所有azure-spring依赖项=3.4.0
在我们将 azure 依赖项从 2.3.5 升级到 3.4.0 之前,这也运行良好。
当代理应用标准的RFC7239 "ForWARDed Headers"如X-ForWARDed-Proto
和X-ForWARDed-Host
时,应用以下两种配置后应该正确计算重定向url。 (我假设您使用的是 tomcat)
server.forWARD-headers-strategy=NATIVE
"如果代理添加了常用的X-ForWARDed-For和 X-ForWARDed-Proto 标头,将 server.forWARD-headers-strategy 设置为 NATIVE 足以支持这些。”
server.tomcat.redirect-context-root=false
如果您使用 tomcat 并在代理处终止 SSL, server.tomcat.redirect-context-root 应设置为 false。这 允许在任何重定向之前遵守 X-ForWARDed-Proto 标头 执行。
Spring Boot 中的重定向 URL 是如何定义的?如果您对基本 URL 使用占位符,例如 {BaseUrl}/login/oauth2/code/{registrationID}
,则上述配置有效。这样,{BaseUrl}
占位符由 Spring Security 动态解析,具体取决于它是否位于代理之后。
官方文档中的更多信息:
以上是大佬教程为你收集整理的带有 Azure AD 的 Spring Security 和反向代理背后的 redirect_uri 问题全部内容,希望文章能够帮你解决带有 Azure AD 的 Spring Security 和反向代理背后的 redirect_uri 问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。