OpenIdConnectAuthenticationHandler:消息.状态为null或为空

本文关键字:null 状态 消息 OpenIdConnectAuthenticationHandler | 更新日期: 2023-09-27 17:59:00

我正在为ASP.Net Core应用程序使用UseOpenIdConnectAuthentication中间件,以针对Dells Cloud访问管理器令牌提供商进行身份验证(设置为提供OpenId/OAuth2身份验证)。以下是代码:

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AutomaticAuthenticate = true,
            AutomaticChallenge = true,
            AuthenticationScheme = "ClientCookie",
            CookieName = CookieAuthenticationDefaults.CookiePrefix + "ClientCookie",
            ExpireTimeSpan = TimeSpan.FromMinutes(5),
            LoginPath = new PathString("/signin"),
            LogoutPath = new PathString("/signout")
        });
        app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
        {
            RequireHttpsMetadata = false,
            SaveTokens = true,
            ClientId = "XYZClient_Id",
            ClientSecret = "XYZ_ClientSecret",
            ResponseType = OpenIdConnectResponseType.Code,
            PostLogoutRedirectUri = "https://example.com",
            Configuration = new OpenIdConnectConfiguration {
                AuthorizationEndpoint = "https://CAM.COM/CloudAccessManager/RPSTS/OAuth2/Default.aspx",
                TokenEndpoint = "https://CAM.COM/CloudAccessManager/RPSTS/OAuth2/Token.aspx",
                UserInfoEndpoint = "https://CAM.COM/CloudAccessManager/RPSTS/OAuth2/User.aspx",
                Issuer= "urn:CAM.COM/CloudAccessManager/RPSTS",
            }
        });

但我现在在某一点上被困了几个小时。我得到以下错误:

SecurityTokenInvalidSignatureException:IDX10500:签名验证失败。没有安全密钥可用于验证签名

我正在url查询字符串中获取代码和状态https://example.com/signin-oidc?code=somecode&state=somestate

欢迎提供任何类型的指导。


更新添加了发卡机构签名密钥:

TokenValidationParameters = new TokenValidationParameters
                {
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.GetValue<string>("AppSettings:ClientSecret")))
                }

OpenIdConnectAuthenticationHandler:消息.状态为null或为空

您看到的错误是由于您没有使用OIDC中间件提供的OpenID Connect提供程序配置发现功能造成的,该功能允许它检索用于签名身份令牌的加密密钥。

如果提供程序支持此功能,请删除整个Configuration节点,改为设置Authority。所有端点都应自动为您注册。

如果它不支持此功能,则必须手动将签名密钥添加到OpenIdConnectOptions.TokenValidationParameters.IssuerSigningKeys

我在Scope错误时得到了这个错误,为了修复它,我在末尾添加了一个.default

"Scopes": "https://Company.onmicrosoft.com/OAuth2.POC.MicroServiceAPI/.default"