Удалить требование для HTTPS — ASPNet Razor App

#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