Casper-SC
@Casper-SC
Программист (.NET)

Blazor как отправлять все cookies вместе с каждым клиентским запросом?

Использовал ранее на клиенте React JS + axios. Когда браузер получал ответ от сервера, то автоматом сохранял куки, и каждый запрос на сервер был уже с этими куками. Сейчас же я пытаюсь сделать авторизацию по JWT и мне нужно отправлять куки, так как там JWT.

На сервере я просто достаю его из куков и добавляю в заголовки, чтобы нормально отрабатывала аутентификация:
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;

namespace GoToEs.Identity.Jwt.Middleware
{
    public class SecureJwtMiddleware
    {
        private readonly RequestDelegate _next;

        public SecureJwtMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public async Task InvokeAsync(HttpContext context)
        {
            string token = context.Request.Cookies[".AspNetCore.Application.Id"];

            if (!string.IsNullOrEmpty(token))
            {
                context.Request.Headers.Add("Authorization", "Bearer " + token);
            }

            // https://securityheaders.com
            // Заголовок X-Content-Type-Options используется для защиты от уязвимостей типа MIME sniffing.
            context.Response.Headers.Add("X-Content-Type-Options", "nosniff");
            context.Response.Headers.Add("X-Xss-Protection", "1");

            // X-Frame-Options сообщает браузеру, что если ваш сайт помещен внутри HTML-фрейма, то ничего не отображать.
            // Это очень важно при попытке защитить себя от попыток clickjacking-взлома.
            context.Response.Headers.Add("X-Frame-Options", "DENY");

            await _next(context);
        }
    }
}


Это нужно, чтобы на клиенте не было доступ к JWT через JavaScript, так как это readonly куки. Есть целая статья про безопасность, всё это сделано в целях безопасности, долго расписывать.

На клиенте хочу в ApiAuthenticationStateProvider : AuthenticationStateProvider реализовать проверку аутентификации.
  • Вопрос задан
  • 428 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы