Я создал промежуточное ПО, которое настраивает аутентификацию с использованием токена JWT.В файле startup.cs -
services.AddAuthentication(BearerDefaults.AuthenticationScheme)
.AddMyBearer(opt =>
{
opt.TokenValidationUrl = Configuration[SettingsKey.ApiBaseUri] + "/oauth/validatetoken?version=1";
opt.UserTokenCookieName = Configuration[SettingsKey.UserTokenCookieName];
opt.SubscriptionKey = Configuration[SettingsKey.SubscriptionKey];
opt.Issuer = Configuration[SettingsKey.ApplicationUID];
opt.AuthorizeAllRequests = Convert.ToBoolean(Configuration[SettingsKey.AuthorizeAllRequests]);
opt.AuthenticationScheme = BearerDefaults.AuthenticationScheme;
});
Класс расширения содержит следующий код -
return authBuilder.AddScheme<AuthenticationOptions, AuthHandler>(BearerDefaults.AuthenticationScheme, configureOptions);
Ниже приведена часть возврата в методе HandleAuthenticateAsync
-
var identity = new ClaimsIdentity(claims);
var principal = new ClaimsPrincipal(identity);
AuthenticationTicket authenticationTicket = new AuthenticationTicket(principal, Options.AuthenticationScheme);
return AuthenticateResult.Success(authenticationTicket);
Я проверил, что список заявок содержит все требуемые точки останова для претензий на return AuthenticateResult.Success
.Однако даже после этого контроллер возвращает значение Unauthorized, если оно имеет атрибут [Authorize]
.