Приложение работает правильно при доступе через EC2, но при доступе через шлюз API у меня возникает несколько проблем, связанных с аутентификацией и перенаправлением.
Я подозреваю, что проблема связана с пересылаемыми заголовками, файлами cookie, токеном защиты от подделки или поведением прокси-сервера шлюза API.
/>Текущая конфигурация пересылаемых заголовков:
Код: Выделить всё
builder.Services.Configure(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto |
ForwardedHeaders.XForwardedHost;
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
});
app.UseForwardedHeaders();
Код: Выделить всё
builder.Services.Configure(options =>
{
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.Lax;
options.HttpOnly = HttpOnlyPolicy.Always;
options.Secure = CookieSecurePolicy.SameAsRequest;
});
builder.Services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromHours(24);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
});
Код: Выделить всё
[WRN] Failed to determine the https port for redirect.
[INF] AuthenticationScheme: Cookies was challenged.
[INF] [DEBUG] Scheme: http, URL: http:some-aws-url:8085/authentication/login2026-05-08
Теперь это начинает становиться действительно странным, потому что этот порт на самом деле не является портом, на котором работает мой контейнер, и URL-адрес также не является общедоступным. DNS, используемый для доступа к приложению, схема, которую получает мое приложение, также является http, хотя на самом деле оно работает по https.
Из-за этого автоматическое перенаправление, например переход от /index к /authentication/login, не работает. (Я все еще могу перейти в /authentication/login, но только после ввода URL-адреса вручную). Действие POST никогда не достигает обработчика страницы Razor, и браузер получает HTTP 400 перед входом в обработчик контроллера/страницы.
Есть идеи о том, что вызывает такое поведение? Уже потратил два дня и не нашел ничего полезного.
Кроме того, неисправный aws не принадлежит нам, поэтому сложно вносить какие-либо изменения, прежде чем мы что-нибудь проверим.