У меня есть веб-API, использующий ASP. NET Core 3.1 с пользовательским обработчиком аутентификации OID C и Vue SPA. При первой загрузке пользовательский интерфейс перенаправляет на пользовательский поставщик входа в систему и возвращается к приложению после входа в систему с токеном доступа. В API у меня есть пользовательское промежуточное программное обеспечение для аутентификации, настроенное для вызова конечной точки Instrospection, чтобы проверить токен, если он действителен и активен, получить информацию о пользователе из моей базы данных и установить некоторые утверждения. Я защищаю API с помощью атрибута [Authorize]
на контроллерах.
Что-то вроде:
protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{
/*
call Introspect endpoint based on authority's metadata using access token from Bearer token.
if active, call userinfo_endpoint to get properties of the user
use those properties to retrieve user from my database
retrieve a list of roles from a custom role database
set some claims on the user
create a new ClaimsPrincipal and return new AuthenticationTicket
*/
}
Эта конфигурация работает, но я вижу, что этот метод вызывается при каждом запросе. Это ожидаемое поведение? Я бы предпочел не платить этот штраф за нагрузку при каждом запросе, если мне не нужно.