Я пытаюсь создать метод, который проверяет мои токены. Я получаю свои токены из Azure Active Directory с потоком кода авторизации Open Id Connect. Я получаю токены 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 НО
не работает для access_token
Сообщение об ошибке, которое я получаю, когда этот метод выполняется для access_token:
IDX10511: Ошибка проверки подписи. Пробовали ключи: 'Microsoft.IdentityModel.Tokens.X509SecurityKey, KeyId: CtAAALb-8NsDe333734859crfOc
».
ребенок: 'CtAAALb-8NsDe333734859crfOc'.
Исключения: