我正在使用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")))
}
2条答案
按热度按时间brjng4g31#
您看到的错误是由于您没有使用OIDC中间件提供的OpenID Connect provider configuration discovery feature而导致的,该中间件允许它检索用于对标识令牌进行签名的加密密钥。
如果您的提供者支援此功能,请移除整个
Configuration
节点,并改为设定Authority
。所有端点都会自动为您注册。如果它不支持此功能,则必须手动将签名密钥添加到
OpenIdConnectOptions.TokenValidationParameters.IssuerSigningKeys
。gwbalxhn2#
我得到了这个错误时,范围是错误的,以修复它,我附加了一个**.default**在结束。