#asp.net-core #authentication #blazor-server-side
#asp.net-ядро #аутентификация #blazor- на стороне сервера
Вопрос:
Я ищу наиболее безопасный способ аутентификации моего веб-приложения с использованием выходящего API, который настроен на выдачу токенов JWT. Текущая настройка:
- Asp.net основной API, который способен обрабатывать часть управления пользователями.
- 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, если вы еще этого не сделали, чтобы узнать, о чем я говорю.