Как сделать редирект на refresh-token при AuthenticationFailed на asp.net core web api?

Уже настроена аутентификация на проекте asp.net core web api. Нужно сделать, что бы при истечении срока жизни access token делался redirect на refresh-token endpoint, но не могу понять как его вообще сделать. Вот часть конфигурации аутентификации:

.AddJwtBearer(options =>
{
    string securityKey = builder.Configuration.GetSection("JwtOptions:SecurityKey").Value;
    byte[] byteKey = Encoding.UTF8.GetBytes(securityKey);

    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = false,
        ValidateAudience = false,
        ValidateLifetime = true,
        ValidateIssuerSigningKey = true,
        IssuerSigningKey = new SymmetricSecurityKey(byteKey)
    };

    options.Events = new JwtBearerEvents()
    {
        OnMessageReceived = context =>
        {
            context.Token = context.Request.Cookies["access-token"];
            return Task.CompletedTask;
        },
        OnAuthenticationFailed = context =>
        {
            context.Response.Redirect("https://localhost:8876/api/v1.0/authentication/refresh-token");
            return Task.CompletedTask;
        },
        OnChallenge = context => // Это не нужно, но так тоже не работает
        {
            context.Response.Redirect("https://localhost:8876/api/v1.0/authentication/refresh-token");
            return Task.CompletedTask;
        }
    };
});

Когда получаю HttpStatusCode401, срабатывает событие OnAuthenticationFailed, но context.Response.Redirect() ничего не делает (Это не странно, он возвращает void). Тут вопрос, а как тогда сделать редирект на другой эндпоинт, что бы получить новый access token перед тем, как вернётся HttpStatusCode401 и вернуть нормальный StatusCode?


Ответы (0 шт):