Несанкционированная (http 401) ошибка с пользовательским обработчиком токена .NET 8C#

Место общения программистов C#
Ответить
Anonymous
 Несанкционированная (http 401) ошибка с пользовательским обработчиком токена .NET 8

Сообщение Anonymous »

В .NET 8 я пытаюсь реализовать собственный обработчик токена JWT. Во входящем JWT отсутствуют утверждения aud и iss. Возможно, это несовместимо со стандартом OAuth (не уверен), но мне приходится с этим иметь дело.
Я читал о критических изменениях в .NET 8, касающихся проверки токена JWT:
https:/ /github.com/aspnet/Announcements/issues/508.
Поэтому я пытаюсь реализовать TokenHandler, а не ISecurityTokenValidator.
Когда я отправляю запрос, я получаю обратно ошибку HTTP 401 (Неавторизованный).
В настоящее время я жестко запрограммировал результат TokenValidationResult, чтобы он был максимально щадящим.
Нужно ли мне каким-либо образом менять код?
var builder = WebApplication.CreateBuilder(args);

builder.Services
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false,
ValidateAudience = false,
ValidateLifetime = false,
ValidateIssuerSigningKey = false,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("foobar"))
};

options.TokenHandlers.Clear();
options.TokenHandlers.Add(new MyJwtTokenHandler());

Обработчик токена JWT:
public class MyJwtTokenHandler : TokenHandler
{
public override Task ValidateTokenAsync(string token, TokenValidationParameters validationParameters)
{
ClaimsIdentity identity = new(
[
new(ClaimTypes.Name, "John Doe"),
new(ClaimTypes.Email, "johndoe@gmail.com")
]);

var result = new TokenValidationResult
{
IsValid = true,
ClaimsIdentity = identity
};

return Task.FromResult(result);
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... en-handler
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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