我们正在基于Razor框架的现有.NET应用程序中实现新的授权机制。作为身份提供者,我们想使用Keycloak,有一位同事向我们推荐。
我们遵循了本教程中的说明: Keycloak Owin ASP.NET MVC Tutorial
我们已经安装了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登录屏幕。但是登录后,我们收到以下错误消息:
[SecurityTokenSignatureKeyNotFoundException:IDX10501:签名验证失败。无法匹配“孩子”:“ 4385f0fb-2c47-4787-aece-31937e230fd9”,令牌:“ {“ alg”:“ HS256”,“ typ”:“ JWT”,“孩子”:“ 4385f0fb-2c47-4787- aece-31937e230fd9“}。{” jti“:” 619b6b23-aa0f-40d3-9603-94445db7c763“,” exp“:1554799904,” nbf“:0,” iat“:1554798104,” iss“:” https:// ...
Keycloak似乎使用HS256算法,但是我们已经确定要设置RS256来对JWT进行签名。