C# .NET MVC(Razor)身份验证与密钥斗篷

C# .NET MVC(Razor)身份验证与密钥斗篷,c#,asp.net-mvc,razor,openid-connect,keycloak,C#,Asp.net Mvc,Razor,Openid Connect,Keycloak,我们正在基于Razor框架在现有的.NET应用程序中实现一种新的授权机制。作为我们想要使用的身份提供者,一位同事推荐了我们 我们按照本教程中的说明进行操作: 我们已经安装了KeyClope并定制了Startup.cs,以准备应用程序进行KeyClope身份验证: public void ConfigureAuth(IAppBuilder app) { const string persistentAuthType = "keycloak_cookies"; app.Us

我们正在基于Razor框架在现有的.NET应用程序中实现一种新的授权机制。作为我们想要使用的身份提供者,一位同事推荐了我们

我们按照本教程中的说明进行操作:

我们已经安装了KeyClope并定制了Startup.cs,以准备应用程序进行KeyClope身份验证:

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
    });
 }
public void ConfigureAuth(IAppBuilder应用程序){
常量字符串persistentAuthType=“keydove\u cookies”;
app.UseCookieAuthentication(新的CookieAuthenticationOptions{
AuthenticationType=persistentAuthType
});
app.UseKeyDoppeAuthentication(新的KeyDoppeAuthenticationOptions{
Realm=“master”,
ClientId=“电子服务”,
ClientSecret=“”,
VirtualDirectory=“”,
keydeposeURL=“>”,
SigninaAuthenticationType=PersistentAuthenticationType,
AuthenticationType=persistentAuthType,
UseRemoteTokenValidation=true,
DisableAudienceValidation=true,
DisableIssuerValidation=真
});
}
密钥斗篷配置:

当启动应用程序时,我们会看到典型的KeyClope登录屏幕。但登录后,我们会收到以下错误消息:

[SecurityTokenSignatureKeyNotFoundException:IDX10501:签名验证失败。无法匹配'kid':'4385f0fb-2c47-4787-aece-31937e230fd9',令牌:'{“alg”:“HS256”,“typ”:“JWT”,“kid”:“4385f0fb-2c47-4787-aece-31937e230fd9”}。{“jti”:“619b6b23-aa0f-40d3-9603-94445db7c763”,“exp”:1554799904,“nbf”:0,“iat”:1554798104,“iss”:https://...


keydove似乎使用了HS256算法,但我们已经明确设置了RS256用于签署JWT。

我认为问题来自于生成令牌的位置,因为您使用
RSA
设置了服务器,但使用
HS256
算法生成了
JWT
,您应该检查生成
JWT问题可能来自于此,我也相信问题来自JWT生成的部分(即keydove),但正如我前面提到的,我们已经设置keydove使用RS256(我可能会说,我们强制它使用RS256)。我在帖子中添加了keydove设置。。。