Не удается проверить токен доступа AAD - IDX10511: сбой проверки подписи - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь создать метод, который проверяет мои токены. Я получаю свои токены из 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'. Исключения:

1 Ответ

0 голосов
/ 11 июля 2019

Является ли аудитория access_token вашим API или Microsoft Graph / другой сторонней службой? Имеет смысл проверять токены, которые вы (ваши услуги) потребляют, другие аудитории позаботятся об этом самостоятельно. Кроме того, подпись этого JWT может быть непрозрачной для вас.

Смотрите больше - https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/812#issuecomment-456700813

...