是否可以使用MSAL.js获取刷新令牌?

时间:2017-05-22 11:29:51

标签: authentication msal msal.js

我想与Miscrosoft Outlook集成。我能够使用MSAL.js登录并获取访问令牌,但我无法获得刷新令牌。有办法吗?

3 个答案:

答案 0 :(得分:6)

我假设您已经使用了MSAL.js(https://github.com/AzureAD/microsoft-authentication-library-for-js),而您正在使用隐式流进行身份验证和授权。

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

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

答案 1 :(得分:2)

我使用的是msal v1.4.0

我删除了存储中的2个密钥(参见图片),然后再次调用acquireTokenSilent以获取新的访问令牌。 enter image description here 删除这两个键的代码:

const keys = Object.keys(sessionStorage).filter(x => x.indexOf('authority') > 0)
keys.forEach(x => sessionStorage.removeItem(x))

答案 2 :(得分:1)

我在MSAL.js文档中找不到任何答案,但是this source code comment建议您通过仅将clientId作为范围传递给acquireTokenSilent来手动更新令牌。

要续订idToken,请在身份验证参数中将clientId作为唯一范围传递