验证Exchange oAuth令牌

时间:2016-09-08 20:29:47

标签: oauth office365 outlook-addin office-addins office-js

我正在尝试验证我的服务器端代码正在接收的oAuth令牌。

服务器端代码正在使用Exchange托管API,并且我的加载项使用Outlook API中的Office.context.mailbox.getUserIdentityTokenAsync(callback)方法从Exchange检索正在发送的令牌。

当我调用token.Validate(uri)方法时,我遇到了一个问题:

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

根据documentation

  

hostUri :Outlook加载项中名为 getUserIdentityTokenAsync 的页面的完全限定URI。

要从加载项的页面中获取hostUri,我使用:

var hostUri = location.href.split('?')[0];

但是,使用提供的URI会在尝试验证令牌时导致错误:

Error message

我很困惑为什么它会使用加载项所在位置的URI而不是使用发出令牌的身份提供者的公钥(即Exchange)。

1 个答案:

答案 0 :(得分:1)

EWS令牌验证库会通过公钥验证令牌的签名。

主机Uri用于验证id_token中的 aud 声明,以验证此令牌是否从您的应用程序而不是其他应用程序传递。

请确保 Uri 与主页相匹配,您可以通过jwt.io解析id_token以查看真实的 Uri (aud)令牌。