解析身份令牌时“MetadataAccessException”的原因是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (89)

在我们的生产环境中,我们在Microsoft.Exchange.WebServices.Auth.Validation.MetadataAccessException为一个特定用户验证身份令牌时正在接收。

验证码是:

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

这仅针对一个特定用户发生,并且验证已成功完成几次。大部分时间它都失败并显示完整的消息:

Microsoft.Exchange.WebServices.Auth.Validation.MetadataAccessException:无法检索元文档。远程服务器返回错误:(500)内部服务器错误

有没有人见过这个例外?

提问于
用户回答回答于

异常消息对我来说似乎很有描述性。该Validate方法调用远程服务器来检索元数据文档,并从服务器获得500错误。这是例外的原因。

调用的URL嵌入在appctx.amurl令牌有效内容的字段中,如以下从此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。验证过程在本文档中进一步描述,包括在第三步中检索元数据文档。

真正的问题是,尝试检索metatdata文档时500错误的原因是什么?这可能会在某些服务器端日志中找到。只是一个猜测,但既然你说它有时成功,可能问题与服务器上的负载有关。您需要进一步调查才能找到答案。

至于“有没有人见过这个例外?” 不是我 - 但我确定答案是肯定的。;)

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励