我正在使用Azure OAuth2开发Spring Web应用程序。
当我在本地主机中运行应用程序时,应用程序能够为我登录,并且重定向URI为“https://...../login”。当我在Azure应用程序服务上上载应用程序并尝试登录时,我看到redirect_uri为“http://..../login”,而不是https。
我在www.example.com文件中尝试了以下属性application.properties,但没有帮助。
security.oauth2.client.pre-established-redirect-uri=https://appname.azurewebsites.net/login
security.oauth2.client.registered-redirect-uri=https://appname.azurewebsites.net/login
security.oauth2.client.use-current-uri=false
如何解决此错误?
更新
设置上述属性将设置正确的redirect-uri,但问题如下:
1.我浏览“https://mywebapp.azurewebsites.net“
1.页面加载时会显示一个登录按钮。
1.登录按钮使用Azure AD执行sso Oauth2身份验证。
1.第一次重定向发生在“http://mywebapp.azurewebsites.net/login“上。这是Spring Oauth2自动配置库的默认sso登录路径。
1.由于Web应用程序仅支持https,因此http重定向会导致问题。当我在浏览器中手动将http编辑为https时,SSO身份验证正常进行,但Web应用程序的 Jmeter 板页面再次重定向到“http://.../dashboard.html”而不是“https://.../dashboard.html”。
我看了很多Stack Overflow的帖子,似乎Azure应用服务环境中有一个带有Tomcat的Zuul代理,而该代理使用的是http。这可能是问题的根本原因。
我被这个烦人的重定向到http卡住了。
我发现了类似的问题mentioned here。
2条答案
按热度按时间ss2ws0br1#
请遵循在代理服务器后面运行时启用HTTPS
标准行为由某些请求头(
x-forwarded-for
和x-forwarded-proto
)的存在与否决定,这些头的名称是常规的,因此它应该适用于大多数前端代理。您可以通过向application.properties
添加一些条目来打开该值,如以下示例所示:要将Spring Security配置为要求所有(或部分)请求使用安全通道,请考虑添加您自己的
WebSecurityConfigurerAdapter
,该WebSecurityConfigurerAdapter
将添加以下HttpSecurity
配置:rta7y2nd2#
这是当您的Web服务器位于HTTPS终止的代理服务器之后时的行为。请访问此处查看基于springboot的应用程序的解决方案:https://stackoverflow.com/a/73071882/4455267