Ядро dotnet IdentityModel не будет анализировать токены - PullRequest
0 голосов
/ 29 мая 2018

Я играю с портированием одного из моих приложений API на ядро ​​dotnet (v2), и, возможно, наиболее важной частью этого обновления является работа моей аутентификации.

С этой целью ядобавил пакет IdentityModel Thinkteture в мой проект.

Как работает мой API, он получает заголовок аутентификации в виде токена на предъявителя от вызывающей стороны.Затем я Introspect этот токен, чтобы проверить, что он приемлем для текущей задачи, и приступить к основной логике.

Однако мне кажется, что я просто упускаю что-то абсолютно базовое в первоначальной настройке кода,поскольку я не могу заставить интроспекцию срабатывать вообще.

После этого у меня есть несколько фрагментов из моего Startup.cs и контроллера.

Startup.cs

   public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddAuthentication(OAuth2IntrospectionDefaults.AuthenticationScheme)
            .AddOAuth2Introspection(options =>
            {
                options.IntrospectionEndpoint = "#REDACTED#";

                options.ClientId = "#REDACTED#";
                options.ClientSecret = "#REDACTED#";

            });
        var x = 1;

    }

ItemsController.cs

    [HttpGet]
    public IEnumerable<string> Get()
    {
       return new string[] { "isAuthenticated", $"{User.Identity.IsAuthenticated}" };
    }

Эта конечная точка (GET api / items) всегда возвращает false, и мое приложение сервера OIDC никогда не регистрирует никаких попыток связис этим.Точка останова, установленная в коде services.AddAuthentication(), перехватывает, так что я знаю, что базовые части установки на месте.

Некоторые другие вещи, которые я пробовал:

  • наложение Authorize декорации на метод (на самом деле не ожидал, что это сработает .. и это не сработало)
  • Использование параметров Authority и разрешение обнаружения конечной точки самоанализа (возможно, я подумал, что мой сервер OIDC может не поддерживать обнаружение, и это вызывало проблемы, но предоставление конечной точки самоанализа некакая-то разница)

Я уверен, что пропустил что-то совершенно тривиальное, но потратив несколько часов на поиск, поиск и пробу разных вещей, я понял, что просто не замечаюЭто.

1 Ответ

0 голосов
/ 06 сентября 2018

Даже если этот ответ приходит с опозданием, я хотел бы спросить, пытались ли вы установить SkipTokensWithDots в false.

, что сработало для меня:

services.AddAuthentication(OAuth2IntrospectionDefaults.AuthenticationScheme)
    .AddOAuth2Introspection(options =>
    {
        options.IntrospectionEndpoint = "#REDACTED#";

        options.ClientId = "#REDACTED#";
        options.ClientSecret = "#REDACTED#";

        // We are using introspection for JWTs so we need to override the default
        options.SkipTokensWithDots = false;
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...