Что является причиной «MetadataAccessException» при разборе Identity Token? - PullRequest
0 голосов
/ 07 июня 2018

В нашей производственной среде мы получаем Microsoft.Exchange.WebServices.Auth.Validation.MetadataAccessException при проверке токена для одного конкретного пользователя.

Код проверки:

var token = (AppIdentityToken)AuthToken.Parse(rawToken);
token.Validate(new Uri(hostUri));

Это происходит только для одногоконкретного пользователя, и проверка была успешно завершена несколько раз.В большинстве случаев происходит сбой с полным сообщением:

Microsoft.Exchange.WebServices.Auth.Validation.MetadataAccessException: метадокумент не может быть получен.Удаленный сервер возвратил ошибку: (500) Внутренняя ошибка сервера

Кто-нибудь видел это исключение раньше?

1 Ответ

0 голосов
/ 07 июня 2018

Сообщение об исключении мне кажется довольно описательным.Метод Validate вызывает удаленный сервер для получения документа метаданных и получает ошибку 500 от сервера.Это является причиной исключения.

Вызываемый URL-адрес встроен в поле appctx.amurl внутри полезной нагрузки токена, как показано в следующем примере, взятом из this doc :

{ 
  "aud": "https://mailhost.contoso.com/IdentityTest.html", 
  "iss": "00000002-0000-0ff1-ce00-000000000000@mailhost.contoso.com", 
  "nbf": "1331579055", 
  "exp": "1331607855", 
  "appctxsender": "00000002-0000-0ff1-ce00-000000000000@mailhost.context.com",
  "isbrowserhostedapp": "true",
  "appctx": { 
    "msexchuid": "53e925fa-76ba-45e1-be0f-4ef08b59d389@mailhost.contoso.com",
    "version": "ExIdTok.V1",
    "amurl": "https://mailhost.contoso.com:443/autodiscover/metadata/json/1"
  } 
}

В этом примере вы можете видеть поле amurl, которое вызывается во время Validate.Процесс проверки еще более подробно описан в этом документе , включая извлечение документа метаданных на третьем этапе.

Реальный вопрос заключается в том, что является причиной ошибки 500 при попыткеполучить документ метаданных?Это может быть найдено в некоторых журналах на стороне сервера.Просто предположение, но так как вы сказали, что иногда это удается, возможно, проблема связана с нагрузкой на сервер.Вам нужно будет продолжить расследование, чтобы выяснить.

Что касается: «Кто-нибудь видел это исключение раньше?»Не я, но я уверен, что ответ - да.;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...