我正在为我的React.js应用程序使用Azure API,我注意到一段时间后,所有用户请求都会被我的B2C拒绝,因为它们是未经授权的。
我很确定问题是jwt令牌过期了。我正在使用msal.js从Azure AD B2C获取令牌。
我找到了一小段关于Microsoft Docs的文章,但是找不到任何例子。此外,我的研究表明,我需要打开一个新窗口并手动发出HTTP请求。这是正确的吗?
谁能告诉我在哪里可以找到一些这样的例子?
发布于 2018-08-18 04:38:47
在调用你的接口之前一定要先调用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来获取令牌,这可能就是您在问题中提到的。
https://stackoverflow.com/questions/51899749
复制相似问题