Как сделать редирект на 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
?