Word 加载项:"on behalf of" 流中的签名无效

Word Add-in: Invalid signature in "on behalf of" flow

我正在开发一个 Word 加载项并使用 auth.getAccessTokenAsync 进行身份验证,如此处定义:https://dev.office.com/reference/add-ins/shared/office.context.auth.getAccessTokenAsync.

我成功获得了访问令牌,但随后我在此处描述的 "on behalf of" 流程中遇到错误:https://docs.microsoft.com/en-us/office/dev/add-ins/develop/authorize-to-microsoft-graph.

在使用 MSAL (Microsoft.Identity.Client) 验证 bootstrap 访问令牌并获取 Microsoft Graph 令牌时出现错误。代码和错误详情如下。

代码:

var cl = new ConfidentialClientApplication(<client ID>,
"https://login.microsoftonline.com/" + <tenant ID>,
<redirect uri>,
new Microsoft.Identity.Client.ClientCredential(<client secret>),
new Microsoft.Identity.Client.TokenCache(),
new Microsoft.Identity.Client.TokenCache());

var authResult = await cl.AcquireTokenOnBehalfOfAsync(new[] {
    "Sites.Read.All"
},
new Microsoft.Identity.Client.UserAssertion(accessToken));

错误:

AADSTS50013: Assertion contains an invalid signature. [Reason - The provided signature value did not match the expected signature value., Found key 'Start=02/18/2018, End=02/19/2020, Thumbprint=oZkMJ7Omv9GN7JVM', Configured keys: [Key0:Start=02/18/2018, End=02/19/2020, Thumbprint=oZkMJ7Omv9GN7JVM;Key1:Start=03/31/2018, End=03/31/2020, Thumbprint=xq4mEGikJ5Bkblfw;Key2:Start=11/16/2016, End=11/16/2018, Thumbprint=i1DVz66b9dfpPV3Z;]]\r\nTrace ID: 6ec996c8-517c-4baa-815b-54cee7913f00\r\nCorrelation ID: 4cc9d7dd-3879-4be4-a067-ed80eaaaad1d\r\nTimestamp: 2018-04-24 07:10:23Z

如果我制作一个常规网络应用程序(不是 Office 加载项)并使用 MSAL.js 获取访问令牌,则该令牌可以正常验证。

据我所知,MSAL.js 令牌与 Word 加载项令牌的签名有所不同。我使用相同的范围、客户端 ID 和租户 ID。

解决方案是确保我从 Word 加载项中正确获取令牌。 IE11 F12 开发人员工具在控制台 window 中输出变量时会截断字符串,因此我只是将其打印在 UI 上,现在可以正常工作了。

感谢 Wayne Yang 帮助我走到这一步。 :)