【发布时间】:2017-08-18 12:55:57
【问题描述】:
我们想要验证使用 office.js Office.context.mailbox.getUserIdentityTokenAsync((result) 获取的 JWT 令牌。我们已经实现了自己的 JwtSecurityTokenHandler 以获取用户的唯一 ID 并将其作为声明添加到请求。所以我们可以在我们所有的功能中授权用户。
但我们无法验证 JWT 令牌。它抛出以下 invalidAudienceURi 异常。但是,当我们解码令牌时,用于生成令牌的 URI 会使用 et 查询字符串动态生成。这个 et 查询字符串是由 office.js 动态注入的。
例外:
Microsoft.Exchange.WebServices.Auth.Validation.InvalidTokenAudienceException was unhandled by user code
HResult=-2146233088
Message=Audience URI validation failed. Audience does not match.
Source=Microsoft.Exchange.WebServices.Auth
StackTrace:
at Microsoft.Exchange.WebServices.Auth.Validation.AppIdentityToken.ProcessToken(Uri extensionServiceHost, String key) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.000\SOURCES\sources\dev\EwsManagedApi\src\Auth\Validation\ClientExtensionIdentityToken.cs:line 220
at Microsoft.Exchange.WebServices.Auth.Validation.AppIdentityToken.Validate(Uri extensionServiceHost, String catchedKey) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.000\SOURCES\sources\dev\EwsManagedApi\src\Auth\Validation\ClientExtensionIdentityToken.cs:line 185
at Microsoft.Exchange.WebServices.Auth.Validation.AppIdentityToken.Validate(Uri extensionServiceHost) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.000\SOURCES\sources\dev\EwsManagedApi\src\Auth\Validation\ClientExtensionIdentityToken.cs:line 155
at UatWork.Web.CustomTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken) in C:\Users\vinay\Source\Workspaces\UatWork-O365\Development\UatWork\src\UatWork.Web\Startup.cs:line 176
at Microsoft.AspNet.Authentication.JwtBearer.JwtBearerHandler.<HandleAuthenticateAsync>d__1.MoveNext()
图像:异常和自定义处理程序
已尝试的解决方案 1:我们尝试覆盖 ValidateAudience 方法。但是在运行时,这个方法 id 永远不会被执行。 解决方案 2 已尝试:我们尝试添加 AudienceValidator 作为 jwttoken 处理程序的选项。不幸的是,这也没有被调用。
谁能告诉我从这里怎么走?
谢谢, 维奈TC
【问题讨论】:
标签: c# jwt outlook-web-addins