14

我想与 Microsoft Outlook 集成。我能够使用 MSAL.js 登录并获得访问令牌,但我无法获得刷新令牌。有没有办法做到这一点?

4

3 回答 3

11

我假设由于您使用的是 MSAL.js ( https://github.com/AzureAD/microsoft-authentication-library-for-js ),因此您正在使用隐式流进行身份验证和授权。

隐式流不支持刷新令牌,但您可以静默请求新令牌。这与您首先请求令牌(id 或访问)的方式类似。不幸的是,我还没有发现 MSAL.js 透明地执行此操作,我需要检测过期的令牌并在我的代码中请求新的令牌。您可以在此处阅读有关刷新令牌的更多信息。

或者,如果您正在实施的内容允许您使用其他 MSAL 库之一(例如,.Net 库),那么您可以使用其他显式支持刷新令牌的 OAuth 流之一。

于 2017-06-07T14:07:53.050 回答
2

我使用 msal v1.4.0

我删除了存储中的 2 个密钥(见图),然后acquireTokenSilent再次调用以获取新的访问令牌。 在此处输入图像描述 删除这两个键的代码:

const keys = Object.keys(sessionStorage).filter(x => x.indexOf('authority') > 0)
keys.forEach(x => sessionStorage.removeItem(x))
于 2020-10-01T01:16:19.657 回答
1

我在 MSAL.js 文档中找不到任何答案,但是此源代码注释建议您可以通过仅将 clientId 作为范围传递给acquireTokenSilent.

要更新 idToken,请在 Authentication Parameters 中传递 clientId 作为唯一范围

于 2020-07-07T19:21:58.020 回答