我正在使用UseOpenIdConnectAuthentication中间件对ASP.Net核心应用程序进行身份验证,使用ASP.Net云访问管理器令牌提供者(安装以提供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 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")))
}
发布于 2016-07-28 09:35:17
您所看到的错误是由于您没有使用OIDC中间件提供的OpenID连接提供程序配置发现功能,这使得它能够检索用于签名身份令牌的加密密钥。
如果提供程序支持此功能,则删除整个Configuration
节点并设置Authority
。所有端点都应自动为您注册。
如果它不支持此特性,则必须手动将签名密钥添加到OpenIdConnectOptions.TokenValidationParameters.IssuerSigningKeys
中。
发布于 2022-07-24 23:12:37
当作用域出错时,我得到了这个错误,为了修复它,我在最后附加了一个.default。
"Scopes": "https://Company.onmicrosoft.com/OAuth2.POC.MicroServiceAPI/.default"
https://stackoverflow.com/questions/38601672
复制