Попытка авторизации моего API с помощью KeyCloak - не удается авторизоваться и выдает ошибку, если я отлаживаю - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь использовать KeyCloak для аутентификации моего кода API. Я реализовал его в соответствии с примерами здесь проверил мои параметры несколько раз, но когда я звоню с помощью Postman и отлаживаю код, я получаю следующую ошибку:

Не удалось загрузить тип 'System.IdentityModel.Tokens.ISecurityTokenValidator' из сборки 'System.IdentityModel.Tokens.Jwt, версия = 5.2.2.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35'.

Этот код - C # .net 4.7.1, и пакеты NuGet являются самыми последними стабильными (то есть 5.2.2). KeyCloak установлен локально на моей машине, работает и доступен. Любые мысли о том, что я могу делать неправильно, или как я могу узнать, почему это не удается подтвердить подлинность.

Это мой код:

            app.UseCookieAuthentication(new CookieAuthenticationOptions{AuthenticationType = persistentAuthType});
        app.SetDefaultSignInAsAuthenticationType(persistentAuthType);
        app.UseKeycloakAuthentication(new KeycloakAuthenticationOptions
        {
            Realm = kcValues.Realm,
            ClientId = kcValues.Audience,
            ClientSecret = kcValues.AudienceSecret,
            KeycloakUrl = kcValues.Url,
            AuthenticationType = persistentAuthType,
            SignInAsAuthenticationType = persistentAuthType,
            AllowUnsignedTokens = false,
            DisableIssuerSigningKeyValidation = false,
            DisableIssuerValidation = false,
            DisableAudienceValidation = false,
            TokenClockSkew = TimeSpan.FromSeconds(2)
        });

Объект kcValues ​​просто содержит ссылки KeyCloak - не имеет значения, использую ли я их или жестко кодирую значения в.

РЕДАКТИРОВАТЬ: После еще одного исследования, когда я удаляю авторизацию, в методе API пользователя нет - он пуст. Нет имени пользователя или претензий. Похоже, что пользователь не передается в методы.

1 Ответ

0 голосов
/ 18 мая 2018

Хорошо, ну, это заняло так много времени, но в какой-то момент я добавил это в свой код:

config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter("Bearer"));
  • Я думаю, что попытка заставить это работать ранее. Удаление этого заставило его работать - по крайней мере, теперь оно перенаправляет на брелок, когда он не авторизован.
...