从 azure ad 刷新访问令牌

Refreshing the access token from azure ad

我有一个场景,我的 API 通过图表 API 更新了活动目录中的一些声明。
在这种情况下,我通过响应 headers 通知客户端它需要刷新访问令牌,以便获得具有新声明的令牌。

问题是,当我调用 acquireTokenSilent(在 Msal.UserAgentApplication 中)时,给了我旧令牌。我发现这是因为 Msal 将访问令牌保存在 sessionStorage/localStorage 中。

有没有办法让我在不直接删除缓存的情况下显式请求新的访问令牌?

acquireTokenSilent 方法将在后台静默获取和更新令牌。默认情况下,访问令牌将在一小时后过期。 1 小时后,您将获得一个新的访问令牌。可以参考这个document

通常我们可以使用刷新令牌来刷新访问令牌。但在 msal.js 中,这是不透明的。反正你可以看看这个.

您可以退出并重新登录。然后你会得到一个新的访问令牌。

您也可以调用acquireTokenPopupacquireTokenRedirect方法获取新的访问令牌,但它们是交互式方法。

参考How to renew tokens with MSAL.js了解更多详情。