Использование потока учетных данных клиента на identityserver4 и пользовательском AuthorizationHandler User.Identity.isAuthenticated = false - PullRequest
1 голос
/ 29 февраля 2020

Привет, я использую идентификационный сервер 4, и я создал клиента, который защищен с помощью client_credentials

Я могу получить токен, используя clientid и secret, и в соответствии с jwt.io истекает срок доступа токен составляет 3600 секунд или (1 час)

на net ядре 2.2 api. У меня есть собственный AuthorizationHandler

protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ClientCredentialRequirement requirement)
        {

            if (requirement.AllowedClients != null && requirement.AllowedClients.Any()) {

                if (context.User.Identity.IsAuthenticated) { // this is false
                     context.Succeed(requirement);
                            return Task.CompletedTask;
                } 

, должно ли это возвращать false при использовании учетных данных клиента? я ожидал, что это правда, так как токен действителен

1 Ответ

0 голосов
/ 01 марта 2020

ТАК, я понял это.

Оказывается, что тот факт, что приложение является полнофункциональным «idserver» плюс «mvc веб-сайт», уже настроенный с аутентификацией cook ie, вызывал у меня проблемы.

Запросы к API не было претензий, потому что схема аутентификации Bearer не использовалась для обработки запроса.

Мне пришлось добавить это к контроллеру API, чтобы он работал как положено.

[Authorize(AuthenticationSchemes = "Bearer")]
public class MixedController : Controller

подробно здесь

теперь даже при использовании учетных данных клиента утверждения User.Identity теперь заполняются утверждениями и областями действия из токена, а пользователь отображается как Authenticated = true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...