Azure 无法验证AAD访问令牌-IDX10511:签名验证失败

Azure 无法验证AAD访问令牌-IDX10511:签名验证失败,azure,azure-active-directory,access-token,Azure,Azure Active Directory,Access Token,我正在尝试构建一个方法来验证我的令牌。我正在使用开放Id连接授权代码流从Azure Active Directory检索令牌。我得到的令牌是access\u令牌和id\u令牌。我正在使用.NETCore 我的验证代码如下: string stsDiscoveryEndpoint=”https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration"; var handler=新的JwtSecurityTok

我正在尝试构建一个方法来验证我的令牌。我正在使用开放Id连接授权代码流从Azure Active Directory检索令牌。我得到的令牌是access\u令牌id\u令牌。我正在使用.NETCore

我的验证代码如下:

string stsDiscoveryEndpoint=”https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration";
var handler=新的JwtSecurityTokenHandler();
ConfigurationManager configManager=新的ConfigurationManager(stsDiscoveryEndpoint,新的OpenIdConnectConfigurationRetriever());
OpenIdConnectConfiguration config=configManager.GetConfigurationAsync().Result;
尝试
{
TokenValidationParameters validationParameters=新的TokenValidationParameters
{
ValidIssuers=new[]{”https://login.microsoftonline.com/tenantid/v2.0" },
validudiences=new[]{“客户端Id”},
ValidateAudience=true,
validateisuer=true,
IssuerSigningKeys=config.SigningKeys,
ValidateLifetime=true
};
var tokenHandler=new JwtSecurityTokenHandler();
SecurityToken validatedToken=null;
ValidateToken(token.AccessToken,validationParameters,out validatedToken);
返回validatedToken!=null;
}
捕获(SecurityTokenInvalidSignatureException ex)
{
返回false;
}
捕获(SecurityTokenValidationException)
{
返回false;
}
下面的代码对id\u令牌起作用,但是 访问令牌不起作用

为access_令牌执行此方法时,我收到的错误消息为:

IDX10511:签名验证失败。尝试的密钥:“Microsoft.IdentityModel.Tokens.X509SecurityKey,密钥ID:CTAALB-8NsDe333734859crfOc '. 孩子:“CTAALB-8NsDe333734859crfOc”。 捕获的异常:
''

访问令牌是您的API还是Microsoft Graph/其他第三方服务?只有验证您(您的服务)使用的代币才有意义,其他受众将自行处理。除此之外,JWT的签名对您来说可能是不透明的


有关更多信息,请参见此-

代币仅在我自己的服务中存储和使用。我想在从AAD接收令牌时验证这些。如果您使用ADAL/MSAL,则默认情况下验证颁发者,或者您可以执行
new-TokenValidationParameters{ValidAudience=clientId,validateisuer=true}
。测试、捕获一个有效的access_令牌,然后使用curl/Postman调用修改了令牌签名的API很容易。更好的是,在测试中模拟它。