gpt4 book ai didi

msal - 如果用户从 msal .net 代码登录,则无法使用 msal.js 静默获取访问 token

转载 作者:行者123 更新时间:2023-12-01 04:35:14 31 4
gpt4 key购买 nike

我从 GitHub 下载了示例以试验 Azure AD B2C https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi

我已经为我的 AADB2C 重新配置了这个 Web 应用程序,并且一切正常。

为了同时试验 MSAL.js,我添加了一个新页面,为登录用户实现获取访问 token 。用户使用服务器端代码登录。但是,我无法获得已登录用户的缓存用户 session ,因为 MSAL.js 似乎不知道用户已经从服务器端代码登录,反之亦然。

这是我用来获取记录的用户 session 并尝试静默获取 token 的代码。

if (msalInstance.getAccount()) {
var tokenRequest = {
scopes: ["user.read", "mail.send"]
};
msalInstance.acquireTokenSilent(tokenRequest)
.then(response => {
// get access token from response
// response.accessToken
})
.catch(err => {
// could also check if err instance of InteractionRequiredAuthError if you can import the class.
if (err.name === "InteractionRequiredAuthError") {
return msalInstance.acquireTokenPopup(tokenRequest)
.then(response => {
// get access token from response
// response.accessToken
})
.catch(err => {
// handle error
});
}
});
} else {
// user is not logged in, you will need to log them in to acquire a token
}

即使用户已经使用 Microsoft.Identity Code (MSAL C# lib) 登录,msalInstance.getAccount() 函数也将始终返回 null。

如果用户使用服务端代码登录,如果任何人都可以静默获取访问 token 。

最佳答案

遇到了同样的问题。奇怪的是,当您的 .js 应用程序时,开发人员 Msal.js 有安全问题采用在您的 .net 应用程序中启动的 session 。尽管客户端不是放置这种安全机制的正确位置。这是我找到该信息的地方:related issue on github

您可以通过将 session ID 或登录提示添加到 acquireTokenSilent(),在您的 .js 应用程序中采用 .net 启动的 session 。更多信息可以在这里找到:official msal.js documentation

关于msal - 如果用户从 msal .net 代码登录,则无法使用 msal.js 静默获取访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56954842/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com