мы внедряем новый механизм авторизации в наше существующее .NET-приложение на основе Razor Framework. В качестве провайдера идентификации мы хотим использовать Keycloak , который рекомендовал нам коллега.
Мы следовали инструкциям из этого урока:
Учебник для ключей Owin ASP.NET MVC
Мы установили Keycloak и настроили Startup.cs для подготовки приложения к KeycloakAuthentication:
public void ConfigureAuth(IAppBuilder app) {
const string persistentAuthType = "keycloak_cookies";
app.UseCookieAuthentication(new CookieAuthenticationOptions {
AuthenticationType = persistentAuthType
});
app.UseKeycloakAuthentication(new KeycloakAuthenticationOptions {
Realm = "master",
ClientId = "eservice",
ClientSecret = "<<client-Secret>>",
VirtualDirectory = "",
KeycloakUrl = "<Keycloak URL>>",
SignInAsAuthenticationType = persistentAuthType,
AuthenticationType = persistentAuthType,
UseRemoteTokenValidation = true,
DisableAudienceValidation = true,
DisableIssuerValidation = true
});
}
Конфигурация Keycloak:
При запуске приложения мы получаем типичный экран входа Keycloak. Но после входа мы получаем следующее сообщение об ошибке:
[SecurityTokenSignatureKeyNotFoundException: IDX10501: Ошибка проверки подписи. Невозможно сопоставить 'kid': '4385f0fb-2c47-4787-aece-31937e230fd9', токен: '{"alg": "HS256", "typ": "JWT", "kid": "4385f0fb-2c47-4787- aece-31937e230fd9 "} {." JTI ":" 619b6b23-aa0f-40d3-9603-94445db7c763" , "ехр": 1554799904, "НСБ": 0, "IAT": 1554798104, "ИСС": "https: // ...
Кажется, что Keycloak использует алгоритм HS256, но мы определенно настроили RS256 для подписания JWT.