У меня есть установка Azure FrontDoor в качестве обратного прокси-сервера / балансировщика нагрузки между контейнером, работающим на порту 5443, и личным доменом. Смысл этого в том, чтобы предоставить пользователям стандартный адрес. Т.е. container.azurecontainer.io:3443 указывает на https://oursite3.example.com.
Один и тот же aci запускает несколько контейнеров:
container.azurecontainer.io:443
container.azurecontainer.io:2443
container.azurecontainer.io:3443
https://oursite1.example.com
https://oursite2.example.com
https://oursite3.example.com
Затем у нас есть несколько aci, развернутых по всему миру в разных регионах (следовательно, мы используем Frontdoor для балансировки нагрузки между разными экземплярами).
В этом примере на container.azurecontainer.io:3443 установлена аутентификация MS AD. При нажатии на ссылку пользователь перенаправляется на вход, создается ссылка, которая перенаправляет на нее браузер. В ссылке есть redirect_uri. Примерно так: https://login.microsoftonline.com/0000000000000000-0000-0000ua /authorize?client_id=00000000-0000-0000-0000-000000000002&redirect_uri=https%3A%2F%2Foursite3.example.com%3A3443%2Fsignin-oidc&response_type=id_token&scope=openid%20profile&response_modejcejdf-ali_modejdf-jdjdjdjdjdjdjdjdjdjp_postalks_modejdjdf_ljdjdjdjdjdjdjdjp_postalks_modejdf SKU = ID_NETSTANDARD2_0 & x-client-ver = 5.5.0.0
Однако при входе пользователь получает на сайте следующее:
AADSTS50011: URL-адрес ответа, указанный в запросе, не соответствует URL-адресам ответа, настроенным для приложения: '00000000-0000-0000-0000-000000000003'
Причина в том, что URL-адрес ответа приложения AD установлен на:
https://oursite3.example.com/signin-oidc
Однако при ближайшем рассмотрении URL-адрес, на который был перенаправлен пользователь для входа, включает это как redirect_uri:
https://oursite3.example.com:5443/signin-oidc
то есть порт 5443 был добавлен в конец имени хоста.
По сути, он включает базовый исходный порт в redirect_uri, чего я не ожидал.
Я пробовал использовать ForwardedOptions на нашем сайте. Например, в нашем файле startup.cs содержится следующее (ConfigureServices):
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto;
// Only loopback proxies are allowed by default.
// Clear that restriction because forwarders are enabled by explicit
// configuration.
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
});
а затем (Настроить):
app.UseForwardedHeaders();
Это не решает проблему.
Я посмотрел, могу ли я переопределить значение, устанавливаемое для redirect_uri, посмотрев здесь: https://github.com/dotnet/aspnetcore/blob/b7e122fbac4207b003dc07f6101e50218be8ff21/src/Security/Authentication/Core/src/AuthenticationHandler.cs
Я также пробовал это: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-3.1#troubleshoot
и это:
Кто-нибудь знает, что еще может быть не так?
Благодарность