Oauth 2.0 Azure AD-B2C错误:IDX10501:签名验证失败。无法匹配密钥:kid:';[PII隐藏]';,代币:';[PII隐藏]';

Oauth 2.0 Azure AD-B2C错误:IDX10501:签名验证失败。无法匹配密钥:kid:';[PII隐藏]';,代币:';[PII隐藏]';,oauth-2.0,openid-connect,azure-ad-b2c,Oauth 2.0,Openid Connect,Azure Ad B2c,我使用Swagger进行API调用,对于身份验证,我能够生成承载令牌,但在这之后,我得到了401的响应。检查日志后,以下是错误: Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10501: Signature validation failed. Unable to match keys: kid: '[PII is hidden]', token: '[PII is hidden]

我使用Swagger进行API调用,对于身份验证,我能够生成承载令牌,但在这之后,我得到了401的响应。检查日志后,以下是错误:

Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10501: Signature validation failed. Unable to match keys: 
kid: '[PII is hidden]', 
token: '[PII is hidden]'
我的ConfigureAuth方法如下:

private static void ConfigureAuth(IAppBuilder应用程序)
{
var metadataEndpoint=string.Format(
configProvider.GetConfigValue(“ida:AadInstance”、“AuthConfig”),
configProvider.GetConfigValue(“ida:Tenant”、“AuthConfig”),
GetConfigValue(“ida:SigningPolicy”、“AuthConfig”);
字符串[]validudiences=configProvider.GetConfigValue(“ida:访问群体”,“AuthConfig”).Split(“,”);
TokenValidationParameters tvps=新的TokenValidationParameters
{
有效期=有效期,
AuthenticationType=configProvider.GetConfigValue(“ida:SignInPolicy”、“AuthConfig”),
ValidateAudience=true,
ValidateIsuer=configProvider.GetConfigValue(“ValidateIsuer”、“AuthConfig”),
ValidateLifetime=true,
validudience=configProvider.GetConfigValue(“Swagger:ClientId”、“AuthConfig”),
//NameClaimType=”http://schemas.microsoft.com/identity/claims/objectidentifier",
};
//SecurityToken SecurityToken;
//JwtSecurityTokenHandler=新的JwtSecurityTokenHandler();
app.useAuthBeareAuthentication(
新的OAuthBeareAuthenticationOptions
{
AccessTokenFormat=新JwtFormat(tvps,新OpenIdConnectCachingSecurityTokenProvider(metadataEndpoint)),
Provider=新的OAuthBeareAuthenticationProvider()
{
OnRequestToken=(上下文)=>
{
如果(!string.IsNullOrEmpty(context.Token))
{
}
返回Task.FromResult(0);
},
OnValidateIdentity=(上下文)=>
{
////做
////身份验证后要执行的步骤
返回Task.FromResult(0);
}
}
});
}

我能够通过传递正确的元数据端点来验证令牌。 *

{0}/{1}/v2.0/.众所周知的/openid配置


*

这与发卡机构使用RSA以外的算法对令牌进行签名时报告的消息相同。显然,ECDSA将很快提供:

我必须将我的OpenIdConnectAuthenticationOptions.MetadataAddress更新为
{tenantId}/{policyId}/v2.0/.众所周知的/openid配置。

谁在生成您的JWT?错误是“openid连接端点没有密钥,JWT令牌将从AD B2C生成。您能找到它的来源吗?对不起,不明白,您想让我把完整的代码放在这里吗?嗨,对不起,我在某些网页中没有得到它,我团队中的安全顾问解决了这个问题。我还必须更新
TokenValidationParameters.validudience