三天来,我一直在尝试为以下代码验证Graph API令牌而获得的异常找到解决方案:
var configManager = new ConfigurationManager(
$"{_authenticationSettings.Authority}/.well-known/openid-configuration",
new OpenIdConnectConfigurationRetriever());
var config = await configManager.GetConfigurationAsync();
_validationParameters = new TokenValidationParameters
{
IssuerSigningKeys = config.SigningKeys,
ValidateAudience = true,
// Audience MUST be the app ID aka clientId
ValidAudience = _authenticationSettings.ClientId,
ValidateIssuer = true,
ValidIssuer = config.Issuer,
ValidateLifetime = true
};
var tokenHandler = new JwtSecurityTokenHandler();
var result = tokenHandler.ValidateToken(authHeader.Parameter, _validationParameters, out var jwtToken);
异常发生在调用ValidateToken
并如下所示:
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:'IDX10511:签名验证失败。已尝试密钥:'System.Text.StringBuilder‘。孩子:“System.String”。捕获的异常:“System.Text.StringBuilder”。令牌:'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.‘
我真的找不出为什么会发生这种情况的理由了。有什么想法或建议来解决这个问题吗?
这些包包括:
甚至此solution也不是决定性的。
发布于 2021-02-25 10:08:18
Graph API令牌不能也不应该进行验证,因此签名验证失败。请参阅this answer on GitHub
发布于 2021-02-24 01:51:24
从Graph API验证令牌与标准OIDC令牌略有不同。
有关详细信息,请参阅以下内容:https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/609
https://stackoverflow.com/questions/66335375
复制相似问题