Каково ожидаемое поведение HandleAuthenticateAsyn c с использованием пользовательского AuthenticationHandler <TOptions>? - PullRequest
0 голосов
/ 18 марта 2020

У меня есть веб-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
  */
}

Эта конфигурация работает, но я вижу, что этот метод вызывается при каждом запросе. Это ожидаемое поведение? Я бы предпочел не платить этот штраф за нагрузку при каждом запросе, если мне не нужно.

...