![](/img/trans.png)
[英]Invalid parameter value for redirect_uri: .local URIs not allowed:
[英]MVC 5 app - facebook app redirects to the wrong URI - redirect_uri=http instead of redirect_uri=https
我在Facebook开发人员中有一个应用程序。 此应用配置了“有效OAuth重定向URI”值,并带有带有URL的http s 。 但是,当我单击页面上的“使用Facebook登录”按钮时,facebook会将我重定向到URI的http版本。 这似乎是其OAuth模块中的一个Facebook错误?
当我部署到负载均衡器上终止SSL的AWS Elastic Beanstalk环境时,我遇到了这个问题。 在这种情况下,服务器从负载均衡器收到的请求看起来像客户端正在使用HTTP连接,OWIN提供程序错误地推断出Facebook / Twitter / Google需要重新连接到您的站点的URL应该使用HTTP而不是负载均衡器公共端的HTTPS。
我找不到一个简单的解决方案,似乎没有任何参数可以覆盖存储在IOwinRequest.Scheme
属性中的URI协议。 最后,我获取了Katana项目的源代码和ASP.NET Identity项目的源代码,并对它进行了一些修改,以便在解决方案中包含本地项目:
我在Katana中遗漏了大约50个其他项目-我将所有其他依赖项Nuget包都引用到了正式版本。
然后,我找到了对IOwinRequest.Scheme
所有引用,并用IOwinRequest.Scheme
代码替换了该代码段,该代码段还查找了使用SSL卸载时负载均衡器注入的X-Forwarded-Proto标头。
像这样:
var scheme = Request.Scheme;
if (string.Equals(Request.Headers["X-Forwarded-Proto"], "https", StringComparison.InvariantCultureIgnoreCase))
{
scheme = "https";
}
// Use the scheme in the construction of a URI...
如果您的负载平衡器或代理服务器不提供X-Forwarded-Proto标头,那么您的选择将非常有限。 您可以重新加密流量,并使用与之相同的协议将其发送到服务器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.