【发布时间】:2019-11-19 03:17:39
【问题描述】:
我正在尝试构建一种方法来验证我的令牌。我正在使用 Open Id Connect 授权代码流从 Azure Active Directory 检索我的令牌。我得到的令牌是 access_token 和 id_token。我正在使用 .NET Core。
我的验证码如下:
string stsDiscoveryEndpoint = "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration";
var handler = new JwtSecurityTokenHandler();
ConfigurationManager<OpenIdConnectConfiguration> configManager = new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint, new OpenIdConnectConfigurationRetriever());
OpenIdConnectConfiguration config = configManager.GetConfigurationAsync().Result;
try
{
TokenValidationParameters validationParameters = new TokenValidationParameters
{
ValidIssuers = new [] { "https://login.microsoftonline.com/tenantid/v2.0" },
ValidAudiences = new [] { "client-Id" },
ValidateAudience = true,
ValidateIssuer = true,
IssuerSigningKeys = config.SigningKeys,
ValidateLifetime = true
};
var tokenHandler = new JwtSecurityTokenHandler();
SecurityToken validatedToken = null;
tokenHandler.ValidateToken(token.AccessToken, validationParameters, out validatedToken);
return validatedToken != null;
}
catch (SecurityTokenInvalidSignatureException ex)
{
return false;
}
catch(SecurityTokenValidationException)
{
return false;
}
id_token BUT 下面的代码工作 对 access_token
不起作用为 access_token 执行此方法时收到的错误消息是:
IDX10511:签名验证失败。尝试的键:'Microsoft.IdentityModel.Tokens.X509SecurityKey,KeyId:CtAAALb-8NsDe333734859crfOc '。 孩子:'CtAAALb-8NsDe333734859crfOc'。 捕获的异常: ' '
【问题讨论】:
标签: azure azure-active-directory access-token