代码之家  ›  专栏  ›  技术社区  ›  timeinvariant

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

  •  2
  • timeinvariant  · 技术社区  · 7 年前

    我正在开发一个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
    

    如果我制作一个常规的web应用程序(不是Office插件)并使用MSAL。js获取访问令牌,该令牌验证良好。

    据我所知,MSAL的签名有所不同。js token与单词Add-in token。我使用相同的作用域、客户端ID和租户ID。

    1 回复  |  直到 7 年前
        1
  •  1
  •   timeinvariant    7 年前

    解决方案是确保我正确地从外接程序这个词中获取令牌。IE11 F12开发工具在控制台窗口中输出变量时会截断字符串,所以我只是将其打印在UI上,现在可以正常工作了。

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