Глобальная авторизация JWT в.NET Core

Я использую пользовательский JWT в своем проекте.NET Core с jose-jwt. (Все другие методы аутентификации, которые я пробовал, были чертовски непонятны.) У меня все реализовано, но я не уверен, как я могу проверять токен при каждом запросе. Большинству функций в моем API потребуется эта авторизация, поэтому я хотел бы зарегистрировать ее глобально и указать функции, которые в ней не нуждаются (по сути, например, [AllowAnonymous]). Я хотел бы вернуть 401, если аутентификация не удалась.

Мне не нужен полностью написанный для меня код, но я не уверен, как написать это и вставить в конвейер. Как я могу сделать это? Я даже иду об этом правильным путем?

2 ответа

Проверка JWT похожа на проверку основного запроса на аутентификацию.

Посмотрите https://github.com/blowdart/idunno.Authentication для реализации промежуточного программного обеспечения.

Во-первых, вам нужно использовать JwtBearerAuthentication промежуточное ПО в Configure метод.

 app.UseJwtBearerAuthentication(new JwtBearerOptions
 {
      Authority = ...,
      Audience = ...
 });

Глобальную авторизацию смотрите в MVC Core. Как форсировать / установить глобальную авторизацию для всех действий?

services.AddMvc(config =>
{
    var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
    config.Filters.Add(new AuthorizeFilter(policy));
});
Другие вопросы по тегам