我在我的React.js应用程序中使用了Azure AD B2C,我注意到一段时间后,所有用户请求都被我的API拒绝为未授权。
我很确定问题是jwt
令牌到期了。我正在使用msal.js
从Azure AD B2C获取令牌。
我在Microsoft Docs上找到了一个简短的段落,但是找不到任何示例。我的研究还表明,我需要打开一个新窗口并手动发出HTTP请求。这是正确的吗?
有人可以告诉我在哪里可以找到这个例子吗?
答案 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来获取令牌,这可能是您在问题中所指的。