在我们的生产环境中,当我们验证一个特定用户的身份令牌时,我们会收到一个Microsoft.Exchange.WebServices.Auth.Validation.MetadataAccessException
。
验证码为:
var token = (AppIdentityToken)AuthToken.Parse(rawToken);
token.Validate(new Uri(hostUri));
这只对一个特定的用户发生,并且验证已经成功完成了几次。大多数情况下,它会失败,并显示完整的消息:
无法检索元文档Microsoft.Exchange.WebServices.Auth.Validation.MetadataAccessException:
。远程服务器返回错误:(500)内部服务器错误
以前有没有人见过这种异常?
发布于 2018-06-08 01:43:19
这条异常消息对我来说似乎很有描述性。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"
}
}
在本例中,您可以看到Validate
期间调用的amurl
字段。验证过程将进一步描述in this document,包括在第三步中检索元数据文档。
真正的问题是,在尝试检索元数据文档时,导致500错误的原因是什么?这可能会在一些服务器端日志中找到。这只是一个猜测,但由于您说它有时会成功,所以问题可能与服务器上的负载有关。您需要进一步调查才能找出答案。
至于“以前有没有人见过这个例外?”不是我--但我确信答案是肯定的。;)
https://stackoverflow.com/questions/50746312
复制相似问题