Как использовать httponly cookie с addmicrosoftidentitywebapi в Asp.net Core?C#

Место общения программистов C#
Anonymous
 Как использовать httponly cookie с addmicrosoftidentitywebapi в Asp.net Core?

Сообщение Anonymous »

Я в настоящее время использую addmicrosoftidentitywebapi для аутентификации с Microsoft Entra ID в моем ASP.Net Core Web API.

Код: Выделить всё

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(configuration.GetSection(ConfigurationKeys.AzureEntraIdSection));
services.AddAuthorization();
Эта настройка ожидает, что токен JWT будет отправлен в заголовок Authorization в качестве токена носителя. Тем не менее, хранение JWT в LocalStorage на Frontend небезопасно из -за рисков XSS. чем из Authorization заголовок.
Я изучил эту статью, которая выполняет следующее:

Итак, чтобы избежать путаницы, мы используем аутентификацию JWT и продолжим использовать аутентификацию JWT даже после того, как мы реализуем логику httponly cookie. Cookie будет использоваться в качестве механизма транспортировки и ничего более - поэтому мы не используем аутентификацию cookie здесь, и нам не нужно регистрировать промежуточное программное обеспечение cookie. < /P>
Но что нам нужно DO расширяет конфигурацию JWTBearer с помощью свойства Events и создать ее с новым классом JWTBearEREVENTS ... тогда внутри мы называем свойство OnMessageReceived, которое действует как событие здесь, когда -то аутентификация Сообщение протокола получено. Это делегат Func, который принимает контекст в качестве параметра.

Код: Выделить всё

options.Events = new JwtBearerEvents
{
OnMessageReceived = ctx =>
{
ctx.Request.Cookies.TryGetValue("accessToken", out var accessToken);
if (!string.IsNullOrEmpty(accessToken))
ctx.Token = accessToken;
return Task.CompletedTask;
}
};
И я, вероятно, мог бы внедрить аналогичный обходной путь, но использование обходного пути означает, что я не использую библиотеку Microsoft.identity.web в качестве предполагаемого.
Есть мысли? Frontend построен с Svelte и использует Arctic, если это имеет значение

Подробнее здесь: https://stackoverflow.com/questions/794 ... p-net-core

Вернуться в «C#»