Какова стандартная реализация Challenge для JwtBearerEvents в IdentityServer 4? - PullRequest
0 голосов
/ 06 февраля 2020
.AddIdentityServerAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme, (IdentityServerAuthenticationOptions options) =>
{
   options.JwtBearerEvents.OnChallenge = ? // What does this by default do? I can't find its source anywhere...
};

Если кто-то может пролить свет на это, я буду очень счастлив.

По какой-то причине, после того, как токен был аутентифицирован, после того, как он был проверен, этот метод вызывается, и по какой-то причине, если я не использую JwtBearerChallengeContext.HandleResponse(), мне всегда возвращают 401 Несанкционированный.

Отсюда возникает вопрос - какова реализация по умолчанию, чтобы я не пропустил и не испортил что-то при реализации моего собственного Challenge (с помощью свойства OnChallenge), которое будет использовать JwtBearerChallengeContext.HandleResponse()?

Это моя текущая реализация, не смотря на то, что изначально предполагалось сделать:

.AddIdentityServerAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme, (IdentityServerAuthenticationOptions options) =>
{
   options.JwtBearerEvents.OnChallenge = context =>
      {
         if (context.AuthenticateFailure == null && context.Error == null
          && context.ErrorDescription == null && context.ErrorUri == null)
          {
              context.HandleResponse();
          }
              return Task.CompletedTask;
      };
};

Не могу не волноваться, что я что-то пропустил, или сделал что-то неправильно.

РЕДАКТИРОВАТЬ: Я нашел этот там, но он не совсем показывает, что делает eventContext сам. Я только знаю, что он передается реализацией пакета по умолчанию IdentityServer4.AccessTokenValidation, который не может быть пустым методом (в противном случае, как мы видели в приведенном выше коде, аутентификация завершится неудачей.)

...