【问题标题】:The acces token of the azure web app obtained through AadTokenProvider will expire in one hour and no new token will be obtained通过 AadTokenProvider 获取的 azure web app 的访问令牌会在一小时后过期,不会获取新的令牌
【发布时间】:2020-12-19 05:04:36
【问题描述】:

我通过以下代码获取访问令牌。

protected async getAccessToken(): Promise<string> {  
         return await this.context.aadTokenProviderFactory
             .getTokenProvider()
             .then((tokenProvider: AadTokenProvider): Promise<string> => {
                 return tokenProvider.getToken(Config.resourceEndpoint, false);
             })
             .catch(error => {
                 console.error("getAccessToken", error);
                 return null;
             });
     }

每次获取的访问令牌都是一样的,但是这个令牌会在一小时后过期,这会导致我无法访问azure web app上的webapi。我怎么解决这个问题?有没有人遇到过类似的问题?

【问题讨论】:

  • 这是前端代码吗?并且您在一小时后在日志中收到错误?
  • 这是 SPFx Web 部件中的反应代码。 azure app api在token过期后会返回401错误。
  • 通常 MSAL(如果在此处使用)应该通过隐式流(隐藏的 iframe)自动刷新令牌。所以它会在大约 55 分钟内返回相同的令牌,然后获取一个新的令牌并返回它。您是否总是要求从中获得新的令牌?
  • 它在 AadTokenProvider 中使用了 adal.js。 55 分钟后,将返回旧令牌而不是新令牌。
  • 我实现的时候参考了下面的文章:docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/guidance/…

标签: azure-active-directory azure-functions access-token azure-web-app-service azure-authentication


【解决方案1】:

如果您每次调用tokenProvider.getToken(Config.resourceEndpoint, false),它总是会为您提供工作访问令牌,即,它会在一小时后/每当令牌过期时在内部刷新令牌并返回给您。您不必在代码中处理这些问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 2020-05-05
  • 1970-01-01
相关资源
最近更新 更多