验证 Exchange oAuth 令牌
Validate Exchange oAuth token
我正在尝试验证我的服务器端代码正在接收的 oAuth 令牌。
服务器端代码正在使用 Exchange Managed API,正在发送的令牌是由我的加载项使用 Outlook Office.context.mailbox.getUserIdentityTokenAsync(callback)
方法从 Exchange 中检索的 API.
我在调用 token.Validate(uri)
方法时 运行 遇到了问题:
var token = (AppIdentityToken)AuthToken.Parse(rawToken);
token.Validate(new Uri(hostUri));
根据 documentation:
hostUri: The fully qualified URI to the page in your Outlook add-in that called getUserIdentityTokenAsync.
要从加载项的页面中获取 hostUri,我使用:
var hostUri = location.href.split('?')[0];
但是,使用提供的 URI 会在尝试验证令牌时导致错误:
我很困惑为什么它会使用加载项所在位置的 URI,而不是使用颁发令牌(即 Exchange)的身份提供者的 public 密钥。
EWS 令牌验证库将通过 public 密钥验证令牌的签名。
主机 Uri 用于验证 id_token 中的 aud 声明,以验证此令牌是从您的应用程序而不是其他应用程序传递的。
请确保 Uri 与主机页面匹配,您可以通过 jwt.io 解析 id_token 以查看真实的 Uri(aud) 在令牌中。
我正在尝试验证我的服务器端代码正在接收的 oAuth 令牌。
服务器端代码正在使用 Exchange Managed API,正在发送的令牌是由我的加载项使用 Outlook Office.context.mailbox.getUserIdentityTokenAsync(callback)
方法从 Exchange 中检索的 API.
我在调用 token.Validate(uri)
方法时 运行 遇到了问题:
var token = (AppIdentityToken)AuthToken.Parse(rawToken);
token.Validate(new Uri(hostUri));
根据 documentation:
hostUri: The fully qualified URI to the page in your Outlook add-in that called getUserIdentityTokenAsync.
要从加载项的页面中获取 hostUri,我使用:
var hostUri = location.href.split('?')[0];
但是,使用提供的 URI 会在尝试验证令牌时导致错误:
我很困惑为什么它会使用加载项所在位置的 URI,而不是使用颁发令牌(即 Exchange)的身份提供者的 public 密钥。
EWS 令牌验证库将通过 public 密钥验证令牌的签名。
主机 Uri 用于验证 id_token 中的 aud 声明,以验证此令牌是从您的应用程序而不是其他应用程序传递的。
请确保 Uri 与主机页面匹配,您可以通过 jwt.io 解析 id_token 以查看真实的 Uri(aud) 在令牌中。