У меня есть ASP.Net Core 2 API, использующий IdentityServer4.Я хотел бы оспаривать ВСЕ запросы к серверу и вызывать перенаправление входа в систему, если пользователь не прошел проверку подлинности, перезванивая на определенный URL-адрес после проверки подлинности.
По умолчанию вызывается перенаправление входа в систему только тогда, когда пользователь, не прошедший проверку подлинности, запрашиваетресурс, защищенный атрибутом [Authorize].Это не будет работать в моем случае использования.
По сути, я хочу функциональный эквивалент атрибута [Authorize] для всего приложения, а не только для конкретных контроллеров.
Какой самый простой способ сделатьэтот?Есть ли параметр, который я могу использовать при настройке служб в Startup.cs (services.AddAuthentication)?Или через пользовательское промежуточное ПО сразу после app.UseAuthentication ()?
Я попробовал следующее пользовательское промежуточное ПО, но оно говорит, что обработчик не настроен.
ConfigureServices
services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
.AddIdentityServerAuthentication(options =>
{
options.Authority = "https://localhost:4000";
options.ApiName = "myapi";
});
Configure
app.UseAuthentication();
app.Use(async (context, next) =>
{
if (!context.User.Identity.IsAuthenticated)
{
await context.ChallengeAsync(IdentityServerAuthenticationDefaults.AuthenticationScheme, new AuthenticationProperties {RedirectUri= "https://localhost:5000/" });
}
else { await next.Invoke(); }
});
app.UseMvc();