oauth-2.0 开放标识连接身份验证处理程序:消息状态为null或空

jecbmhm3  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(145)

我正在使用ASP.NET核心应用程序的UseOpenIdConnectAuthentication中间件来针对Dells云访问管理器令牌提供程序进行身份验证(设置为提供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",
            }
        });

但是我现在在一个点上卡了几个小时。我得到了下面的错误:
安全令牌签名无效异常:IDX 10500:签名验证失败。没有可用于验证签名的安全密钥
我正在URL querystring https://example.com/signin-oidc?code=somecode&state=somestate中获取代码和状态
欢迎提供任何类型的指导。
UPDATE已添加颁发者签名密钥:

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

brjng4g31#

您看到的错误是由于您没有使用OIDC中间件提供的OpenID Connect provider configuration discovery feature而导致的,该中间件允许它检索用于对标识令牌进行签名的加密密钥。
如果您的提供者支援此功能,请移除整个Configuration节点,并改为设定Authority。所有端点都会自动为您注册。
如果它不支持此功能,则必须手动将签名密钥添加到OpenIdConnectOptions.TokenValidationParameters.IssuerSigningKeys

gwbalxhn

gwbalxhn2#

我得到了这个错误时,范围是错误的,以修复它,我附加了一个**.default**在结束。

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

相关问题