Sharepoint Provider托管应用程序:无效的JWT令牌。令牌已过期

时间:2016-05-10 09:28:40

标签: c# asp.net sharepoint office365 sharepoint-online

当我在我的应用中工作时,我随机收到以下错误:

  

无效的JWT令牌。令牌已过期。

     

[SecurityTokenExpiredException:无效的JWT令牌。令牌是   过期]
  Microsoft.IdentityModel.S2S.Tokens.JsonWebSecurityTokenHandler.ValidateLifetime(JsonWebSecurityToken   令牌)+296
  Microsoft.IdentityModel.S2S.Tokens.JsonWebSecurityTokenHandler.ValidateTokenCore(SecurityToken   token,Boolean isActorToken)+162
  EventsWeb.TokenHelper.ReadAndValidateContextToken(字符串   C:\ APP \ TokenHelper.cs中的contextTokenString,String appHostName:120
  EventsWeb.TokenHelper.GetClientContextWithContextToken(字符串   targetUrl,String contextTokenString,String appHostUrl)in   C:\ APP \ TokenHelper.cs:465个
  EventsWeb.Pages.User.tmpl.index.GetHostWebClientContext()in   C:\ APP \页面\用户\ TMPL \ index.aspx.cs:90
  EventsWeb.Pages.User.tmpl.index.OnPreRender(EventArgs e)in   C:\ APP \网页\用户\ TMPL \ index.aspx.cs:69
  System.Web.UI.Control.PreRenderRecursiveInternal()+ 107 7   System.Web.UI.Page.ProcessRequestMain(布尔   includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)   7675

除了重新启动Internet Explorer以解决此问题之外,别无他法。 我在某些应用程序中有这个。 ClientId和ClientSecret有效,否则重启IE无法解决此问题。

此消息发生的时间不同。有时在1小时后有时会在5 ...

之后

由于在此应用中工作,我不知道为什么令牌无效。但那不是用户友好的......

对此有何想法?

由于

1 个答案:

答案 0 :(得分:0)

以下两种情况可能导致令牌过期:

  1. 用户与您的加载项有长时间运行的会话,加载项在启动后会向SharePoint调用许多小时(当前超过12小时)。
  2. 加载项的设计使用户可以在会话结束后的某个时间安排加载项访问SharePoint。
  3. 您可以使用刷新令牌在代码中从ACS获取另一个访问令牌。刷新令牌可持续几个月,可以保存在cookie或服务器端存储中。尝试使用SharePointContext帮助程序类,如果访问令牌自动无效,它可以续订。