我无法通过requireTokenSilent @azure/msal-browser获取accessToken



我最近正试图用"acquireTokenSilent Flow";。我使用的是@azure/msal浏览器,我的应用程序是React。所以,现在我的代码是这样的。

const getTokenRedirect = async (account, apiConfig) => {
publicClient.acquireTokenSilent({
scopes: apiConfig.scopes,
account: account,
authority: apiConfig.authority,
}).then(tokenResponse => {
console.log(tokenResponse);
setAccessToken(tokenResponse.accessToken);
}).catch(async (error) => {
console.log(error);
});
}

然后这个代码响应刷新令牌,而不是accessToken。我不知道为什么acquireTokenSilent没有响应accessToken。我确实从ADB2C获得了idToken。另一个样本(msal.jsvanillaSample(获得了accessToken。所以我认为B2C的设置是正确的。我的代码有一些问题。

有人知道这样的解决方案吗。

这是由msal浏览器的版本引起的,在2.1.0之后的版本中无法返回accessToken。

这是目前在这里跟踪的B2C服务的一个已知问题,微软应该在未来解决它。

我正在使用@azure/msal浏览器版本2.20,现在我已经正确配置了传递给acquireTokenSilent的请求,并且正在获得访问令牌。请检查请求中包含的任何作用域是否使用作用域的完整路径名,而不仅仅是短名称。在我的情况下,我有一个API权限,我在Azure AD B2C中看到该权限名为https://MYAPPNAME.onmicrosoft.com/MYAPPNAME-development/demo.read,因此需要将作用域名称设置为该长名称,而不是仅demo.read的短版本。

最新更新