我们正在使用在docker容器内运行的dotnet核心构建一个Web应用程序 . 我们已经将应用程序放在IIS上的WS2016上,后者用作反向代理 . 在url rewrite模块的帮助下,传入我们的URL(www.myurl.com)的请求将使用容器名称作为主机名转发到相关的docker容器(在我们的例子中,我们称之为“web”) . 此设置适用于此处 .
但是,几天前我们需要添加Facebook oauth授权支持来注册系统并出现问题 . 我们按以下方式设置授权:
...
services.AddAuthentication().AddFacebook(o =>
{
o.CallbackPath = new PathString("/account/facebookreturn");
o.AppId = appSettings.FacebookLogin.AppId;
o.AppSecret = appSettings.FacebookLogin.AppSecret;
})
...
我们的facebook身份验证挑战然后将用户重定向到facebook oauth页面,并使用以下重定向uri:https://www.facebook.com/v2.12/dialog/oauth......redirect_uri=http%3A%2F%2Fweb%2Faccount%2Ffacebookreturn&state= ....
如您所见, redirect_uri
具有docker容器的容器名称/主机名,而实际上应该是"www.myurl.com" .
我们尝试了几种解决方案,例如使用 x-forwarded
标头 . 使用 UseIISIntegration()
和 UseUrls
似乎也没有用 . 我们在这里失踪了什么?我对IIS和Web Headers 没有多少经验,所以它可能相当明显,我很感激帮助 .