gpt4 book ai didi

amazon-web-services - 使用外部登录强制 HTTPS 重定向时出现 HTTP 500 错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:55 25 4
gpt4 key购买 nike

我在 AWS 上有一个由 Elastic Beanstalk 提供支持的负载均衡环境。 SSL 证书应用于负载均衡器。为了强制 https 重定向,我遵循了这篇文章中接受的答案 Redirect to https through url rewrite in IIS within elastic beanstalk's load balancer .这些是我在 web.config 中编写的确切代码行

<rules>
<rule name="Force Https" stopProcessing="true">
<match url="^healthcheck.html$" negate="true" />
<conditions>
<add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>

除了外部登录之外,这对其他一切都非常有效。每当我尝试从外部提供商登录时,都会出现 HTTP 500 错误。如果我删除这些行,那么登录在本地主机和 AWS 上都可以正常工作。请帮助我获得解决方案,以便我能够强制 HTTPS 重定向并成功获得外部登录。

另一件值得一提的事情是,在没有强制重定向的情况下,外部提供商会重定向到网站的 http 版本,即使我从 https 版本请求也是如此。

更新我用于 facebook 登录的确切代码如下

app.UseFacebookAuthentication(new FacebookAuthenticationOptions
{
AppId = "xxx", // production values
AppSecret = "xxx",

BackchannelHttpHandler = new FacebookBackChannelHandler(),
UserInformationEndpoint = "https://graph.facebook.com/v2.7/me?fields=id,name,email,first_name,last_name",
Scope = { "email" },
Provider = new FacebookAuthenticationProvider
{
OnAuthenticated = context =>
{
context.Identity.AddClaim(new Claim("FacebookAccessToken", context.AccessToken));
return Task.FromResult(true);
},
OnApplyRedirect = OnApplyRedirectHttps
}
});

最佳答案

您的应用程序遇到了一个问题,它认为它使用的是 HTTP,但实际上它使用的是 HTTPS。这是由于 ELB 发生的 HTTPS 到 HTTP 连接交换。

因此,无论何时您的应用使用请求 URL,您都需要查看 X-Forwarded-Proto header 。

此 header 将告诉您的应用程序是使用 HTTP 还是 HTTPS 连接到 ELB。

来源:http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html

作为外部登录重定向(到 Facebook、Twitter 等)的一部分,您的应用通常会附加一个返回 URL。您需要确保 URL 使用的是 HTTPS 而不是 HTTP。

查询 X-Forwarded-Proto header 以确定使用的 header 并确保您的返回 URL 具有正确的协议(protocol)。

这将成为您应用中的通用主题。习惯这种方式即可。

更新:

例如,根据这篇 SO 文章:

change facebook redirect_uri web api

您需要将以下代码放在 Startup.Auth.cs 文件的开头:

app.Use((context, next) =>
{
context.Request.Scheme = "https";
return next();
});

关于amazon-web-services - 使用外部登录强制 HTTPS 重定向时出现 HTTP 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40394576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com