Использование API аутентификации JWT в asp.net основное применение блейзора

#asp.net-core #authentication #blazor-server-side

#asp.net-ядро #аутентификация #blazor- на стороне сервера

Вопрос:

Я ищу наиболее безопасный способ аутентификации моего веб-приложения с использованием выходящего API, который настроен на выдачу токенов JWT. Текущая настройка:

  1. Asp.net основной API, который способен обрабатывать часть управления пользователями.
  2. Asp.net серверное приложение core 5.1 blazor, которое используется для обслуживания веб-страниц на стороне клиента. Цель: я хочу, чтобы веб-приложение не имело доступа к базе данных и использовало API для обработки серверной логики.

Один из способов обойти это — заставить JWT сохранить его в виде файла cookie

  services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
    {
        int minute = 60;
        int hour = minute * 60;
        int day = hour * 24;
        int week = day * 7;
        int year = 365 * day;

        options.LoginPath = "/auth/login";
        options.AccessDeniedPath = "/auth/accessdenied";
        options.Cookie.IsEssential = true;
        options.SlidingExpiration = true;
        options.ExpireTimeSpan = TimeSpan.FromSeconds(day/2);

        options.Cookie.Name = "access_token";

        options.TicketDataFormat = new CustomJwtDataFormat(
            SecurityAlgorithms.HmacSha256,
            tokenValidationParameters);
    });
 

и передавайте его каждому запросу

 HttpContext.Response.Cookies.Append("access_token", token, new CookieOptions { HttpOnly = true, Secure = true }); 
 

Я также знаю, что существует множество других методов, которые можно использовать для хранения токенов, таких как локальное хранилище, так какой же самый безопасный способ обработки входа в систему на стороне клиента?

Комментарии:

1. Если вам не нужны какие-либо серверные преимущества Blazor Server, почему бы вместо этого не переключиться на Blazor WASM? Для всего этого требуется использование API.

2. @CoryPodojil Мне нравится скорость серверной версии.

3. Вы имеете в виду, что вам просто нравится скорость загрузки при первом посещении? WASM работает быстро после его установки.

4. @CoryPodojil да, но начальное время загрузки больше, что не является серьезной проблемой, но я ищу оптимальное решение.

5. Ах да, в таком случае вам придется использовать подход WASM и создать некоторые HttpClients из них для доступа к вашим API. Я все же предлагаю проверить Blazor WASM, если вы еще этого не сделали, чтобы узнать, о чем я говорю.