首页 > 解决方案 > 通过 msal.js 刷新令牌

问题描述

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

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

我在 Microsoft Docs 上找到了一小段,但找不到任何示例。此外,我的研究表明我需要打开一个新窗口并手动发出 HTTP 请求。这个对吗?

有人能告诉我在哪里可以找到这方面的一些例子吗?

标签: azure-active-directoryazure-ad-b2cmsalmsal.js

解决方案


acquireTokenSilent在调用API 之前始终调用。让 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 来获取令牌,这可能就是您在问题中所指的内容。


推荐阅读