У меня есть AuthorizationHandler
, который оценивает некоторые требования авторизации для авторизации на основе политики .Некоторая часть ядра ASP.NET вызывает HandleRequirementAsync
с экземпляром AuthorizationHandlerContext
.
Где заполняется AuthorizationHandlerContext.User
?
Для контекста, я смотрюнекоторые свойства в AuthorizationContext.User
, которые соответствуют утверждениям OAuth2 в маркере доступа JWT, включенном в запрос HTTP.Это работает нормально, когда токен JWT был выпущен IdentityServer4, но теперь я добавляю поддержку токенов доступа, поступающих от вторичного провайдера идентификации.
Когда токен получен от этого другого поставщика, AuthorizationContext.User
является пустым объектом, содержащим все пустые поля (т. Е. Он не имеет ни одного из утверждений, содержащихся в токене доступа).Этот вторичный поставщик удостоверений (и его открытый ключ) включены в схему аутентификации канала-носителя JWT в TokenValidationParameters.ValidIssuers
и TokenValidationParameters.IssuerSigningKeys
соответственно.
Это приводит к следующим сообщениям журнала:
AuthenticationScheme: "Bearer" was successfully authenticated.
Authorization failed for user: <sub from the access token used in the request>