Redirect_Uri在Spring社交Facebook登录上使用http而不是https在Heroku上登录

时间:2018-06-27 03:45:39

标签: spring spring-mvc heroku spring-security spring-social-facebook

这是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

2 个答案:

答案 0 :(得分:1)

转到Facebook Developer,在“产品”选项卡下转到Facebook登录 facebook login

启用https 设为“是”

https

然后在有效的oauth重定向网址中添加https网址

valid oauth urls

将您的网站网址更改为https:

Basic settings

Website 我真的很惊讶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();
            });