Мы создаем веб-приложение с ядром dotnet, работающее внутри докеров.Мы поместили приложение за IIS на WS2016, который используется в качестве обратного прокси.Запросы, поступающие на наш URL (www.myurl.com), перенаправляются в связанный контейнер докеров с использованием имени контейнера в качестве имени хоста с помощью модуля перезаписи url (в нашем случае, назовем его «web»).Эта настройка работает до сих пор.
Однако несколько дней назад нам потребовалось добавить поддержку авторизации oauth Facebook для регистрации в системе, и возникла проблема.Мы настраиваем нашу авторизацию следующим образом:
...
services.AddAuthentication().AddFacebook(o =>
{
o.CallbackPath = new PathString("/account/facebookreturn");
o.AppId = appSettings.FacebookLogin.AppId;
o.AppSecret = appSettings.FacebookLogin.AppSecret;
})
...
Затем наша проверка подлинности в Facebook перенаправляет пользователя на страницу oauth Facebook со следующим адресом перенаправления: 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 и веб-заголовками, поэтому это может быть довольно очевидно, и я ценю помощь.