Мой конвейер выглядит примерно так:
Код: Выделить всё
app.UseAuthentication()
....
app.UsePreAuthMiddleWares() // Have a group of middlewares required prior to authorization
app.UseAuthorization()
app.UsePostAuthMiddleWares() // Have a group of middlewares required post authorization
Код: Выделить всё
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
{
// Specify Options and Events
});
services.AddAuthorization(options =>
{
options.DefaultPolicy = new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
.Build();
});
Код: Выделить всё
[ApiController]
[Authorize]
public class BaseApiController : ControllerBase
{
}
Для простоты и для обработки всех ошибок аутентификации в один момент - через JwtBearerEvents я изменил необходимо добавить две политики для обоих токенов, например:
Код: Выделить всё
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer("Policy1", options =>
{
// Specify Options and Events
})
.AddJwtBearer("Policy2", options =>
{
// Specify Options and Events
});
services.AddAuthorization(options =>
{
options.AddPolicy("Policy1", new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
.Build());
options.AddPolicy("Policy2", new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
.Build());
});
Код: Выделить всё
[ApiController]
[Authorize(Policy = "Policy1")]
public class BaseApiController : ControllerBase
{
}
Я что-то упустил здесь и есть ли там способ заставить пользователя утверждать, что он работает с этим кодом потенциально для обеих политик?
Подробнее здесь: https://stackoverflow.com/questions/793 ... h-policies
Мобильная версия