Глобальная авторизация 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));
});