Невозможно получить доступ к утверждениям JWT из ASP.NET HttpContext.C#

Место общения программистов C#
Ответить
Anonymous
 Невозможно получить доступ к утверждениям JWT из ASP.NET HttpContext.

Сообщение Anonymous »

Я пытаюсь получить доступ к утверждениям пользователя из его токена-носителя в ASP.NET Core, но в обработчике HttpContext.User.Identity.Name всегда имеет значение null, а коллекция Claims имеет значение пусто.
Токен передается в виде заголовка следующим образом:

Авторизация: Носитель eyJhbGci....

В Startup.Configure я вызываю UseAuthentication после UseRouting и перед UseEndpoints.

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

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseAuthentication();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync(context.User.Identity.Name ?? "null");
});
});
}
В Startup.ConfigureServices я вызываю AddAuthentication и AddJwtBearer. Я добавил несколько опций, чтобы попытаться отключить как можно больше проверок, поскольку сейчас я просто пытаюсь прочитать значения из токена, но это не помогло.

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

public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
{
options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters {
ValidateIssuer = false,
ValidateIssuerSigningKey = false,
ValidateAudience = false,
ValidateActor = false,
ValidateLifetime = false,
ValidateTokenReplay = false,
};
}
);
}
Мой токен — это фиктивный токен по умолчанию из https://jwt.io/#debugger-io, и при декодировании он выглядит так:

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

{"alg":"HS256","typ":"JWT"}{"sub":"1234567890","name":"John Doe","iat":1516239022}
Чего мне не хватает, чтобы это работало?


Подробнее здесь: https://stackoverflow.com/questions/675 ... ttpcontext
Ответить

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

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

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

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

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