Я пытаюсь использовать 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 пользователя нет - он пуст. Нет имени пользователя или претензий. Похоже, что пользователь не передается в методы.