Word加载项:“代表”流程中的签名无效

时间:2018-04-24 07:16:09

标签: azure-active-directory office-js msal

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

我成功获取了访问令牌,但后来​​我在“代表”流程中遇到错误:https://docs.microsoft.com/en-us/office/dev/add-ins/develop/authorize-to-microsoft-graph

使用MSAL(Microsoft.Identity.Client)验证引导程序访问令牌并获取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。

1 个答案:

答案 0 :(得分:1)

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

感谢Wayne Yang帮助我达到这一点。 :)