我正在为ASP.Net Core应用程序使用UseOpenIdConnectAuthentication中间件来对接Dell 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")))
}
UseOpenIdConnectAuthentication
,而是在AddAuthentication()
中使用AddMicrosoftIdentityWebApp
,那该怎么办?这是基于 Azure 的、今天推荐的 MIP(Microsoft Identity Platform)。 - Konrad Viltersten