У меня есть приложение .NET Core 2.0, работающее в кластере Kubernetes с контейнерами Linux.Перед приложением у меня есть обратный прокси-сервер Nginx, который настроен с использованием LetsEncrypt, SSL-терминации и перенаправления http в приложение.
Мое приложение успешно аутентифицируется и перенаправляет локально (без обратного прокси-сервера) и основано например формы здесь: https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect-aspnetcore
При развертывании эта установка изначально вызывала проблемы с приложением, пытающимся аутентифицировать пользователей, переключаясь с https://my.domain.cloudapp.azure.com на http://my.domain.cloudapp.azure.com. В результате мой ответURL (https://my.domain.cloudapp.azure.com/signin-oidc) не использовался, и я получил ошибку.
Мне удалось исправить это с помощью информации здесь и здесь и, в частности,Я добавил:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
app.Use(async (context, next) =>
{
if (context.Request.Host.Host.ToLower() != "localhost")
context.Request.Scheme = "https";
await next.Invoke();
});
Теперь, когда я перехожу на https://my.domain.cloudapp.azure.com, я правильно перенаправлен на https://login.microsoftonline.com/. После аутентификации я перенаправлен обратно в свое приложение на https://my.domain.cloudapp.azure.com но промежуточное ПО аутентификации OpenID Connect, похоже, не обрабатывает маршрут / signin-oidc. Вместо этого я получаю сообщение об ошибке 404.
Кто-нибудь знает, что я делаю неправильно?