通过msal.js刷新令牌

时间:2018-08-17 16:42:30

标签: azure-active-directory azure-ad-b2c msal msal.js

我在我的React.js应用程序中使用了Azure AD B2C,我注意到一段时间后,所有用户请求都被我的API拒绝为未授权。

我很确定问题是jwt令牌到期了。我正在使用msal.js从Azure AD B2C获取令牌。

我在Microsoft Docs上找到了一个简短的段落,但是找不到任何示例。我的研究还表明,我需要打开一个新窗口并手动发出HTTP请求。这是正确的吗?

有人可以告诉我在哪里可以找到这个例子吗?

1 个答案:

答案 0 :(得分:0)

在调用API之前,请始终调用acquireTokenSilent。让MSAL进行缓存,刷新等,这就是它的用途。如果静默失败,则回退到AcquireTokenPopup或类似内容。

https://github.com/Azure-Samples/active-directory-b2c-javascript-msal-singlepageapp

    function callApi() {
        clientApplication.acquireTokenSilent(applicationConfig.b2cScopes).then(function (accessToken) {
            callApiWithAccessToken(accessToken);
        }, function (error) {
            clientApplication.acquireTokenPopup(applicationConfig.b2cScopes).then(function (accessToken) {
                callApiWithAccessToken(accessToken);
            }, function (error) {
                logMessage("Error acquiring the access token to call the Web api:\n" + error);
            });
        })
    }

旁注:对于acquireTokenSilent,MSAL实际上是创建一个隐藏的iframe来获取令牌,这可能是您在问题中所指的。