#c# #.net #amazon-web-services #aws-fargate
#c# #.net #amazon-веб-сервисы #aws-fargate
Вопрос:
Кажется странным спрашивать:
Я новичок в мире .NET amp; C # и обнаружил, что работаю над проектом Razor / Blazor для веб-приложения.
В рамках моего обучения я просматривал существующий код и вчитывался в различные фрагменты, чтобы понять, что происходит, и мне удалось пройти через многое.
Одна из областей, с которой у меня сейчас возникают проблемы, — это настройка моего веб-приложения .NET.
Для ясности — я смог выполнить настройку без проблем с точки зрения создания образа и запуска контейнера, но сейчас у меня возникают проблемы, похоже, что веб-приложение настроено так, чтобы разрешать доступ к страницам, которые считаются авторизованными, только при переходе из HTTPS-соединения.
Если я отключу перенаправление HTTPS и т.д. И войду в систему, я попаду в компонент, Который говорит: «Извините, вы не авторизованы для доступа к этой странице». . Если я сделаю то же самое, но на HTTPS-порту для приложения, все работает, как ожидалось.
Поскольку я буду развертывать этот контейнер в AWS Fargate и использовать сертификат ALB AWS для удовлетворения своих потребностей в HTTPS, я застрял в том, как по существу отключить все, что препятствует HTTP-доступу. Мой ALB будет отвечать за завершение HTTPS, поэтому я не собираюсь переходить без https!
Ниже приведен некоторый код, который, по моему мнению, имеет отношение к делу:
//Statup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts(); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
}
// app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
}
Комментарии:
1. Я уверен, что существует дюжина дубликатов, но самым быстрым и грязным способом было бы создать новый проект с отключенным HTTPS в настройках либо в CLI, либо в project wizard, и проверить различия в коде.
2. Что касается HTTPS — вы отключаете HTTPS, поэтому все, что стоит за ALB, будет уязвимо. Гораздо проще установить сниффер в серверной сети и начать перехватывать HTTP-вызовы или установить вредоносный прокси-сервер внутри контейнера. HTTPS защищает от атак MITM. ALB обеспечивает защиту от MITM от клиента к ALB, но ничто не защищает связь между вашими службами
3. В данный момент меня меньше беспокоит этот аспект — это больше для того, чтобы я мог перенести существующую версию приложения в Docker и оставить ее как есть, пока мы работаем над повторной сборкой, где я смогу более адекватно решать эти проблемы. Также мой опыт работы с AWS, поэтому я уверен в мерах по защите между ALB и контейнером … как только это сработает: D