这是Spring MVC应用程序,位于Heroku上,具有有效的ssl证书。
当我从spring mvc Web应用程序中单击以下链接时
https://www.website.com/auth/facebook
它重定向到此链接
https://www.facebook.com/v2.5/dialog/oauth?client_id=1234567890&response_type=code&redirect_uri=http%3A%2F%2Fwww.website.com%2Fauth%2Ffacebook&scope=email&state=62b62bad-f8c8-44a3-bacf-a13ce12dfcce
在这种情况下,redirect_uri使用 http 代替 https 。如何强制 https 重定向到URI?
我已遵循此问题中提到的解决方案 Spring OAuth redirect_uri not using https
并创建了以下文件,但没有用。
application.propeties文件包含
server.tomcat.remote-ip-header=X-Forwarded-For
server.tomcat.protocol-header=X-Forwarded-Proto
server.use-forward-headers=true
security.oauth2.client.pre-established-redirect-uri=https://www.website.com/login
security.oauth2.client.registered-redirect-uri=https://www.website.com/login
security.oauth2.client.use-current-uri=false
答案 0 :(得分:1)
转到Facebook Developer,在“产品”选项卡下转到Facebook登录
将启用https 设为“是”
然后在有效的oauth重定向网址中添加https网址
将您的网站网址更改为https:
我真的很惊讶Facebook如何将您重定向到http! 从5月1日起,所有重定向都应重定向到https。即使在您的 localhost 中,您也需要创建一个自签名证书才能使Facebook登录正常。
答案 1 :(得分:0)
如果您使用的是 .net core 应用程序,则在 Startup.cs 文件的 Configure 方法中,添加以下行:
app.Use((context, next) =>
{
if (context.Request.Headers["x-forwarded-proto"] == "https")
{
context.Request.Scheme = "https";
}
return next();
});