Здравствуйте
Уже настроена аутентификация на проекте
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
?