Microsoft SSO报错:The account does not exist in this organization 求助
Microsoft SSO个人账号登录失败问题排查与解决
问题描述
我正在实现Microsoft SSO功能,期望任何微软账号都能登录应用。当前组织内的应用用户登录正常,但使用个人微软账号登录时,出现错误提示:
The account does not exist in this organization
错误截图:
我的SSO端点代码如下:
const REDIRECT_URI = "http://localhost:3000/redirect"; const cca = new msal.ConfidentialClientApplication(config); const scopes = ["user.read"]; router.get("/auth", (req, res) => { // 构造授权码请求对象 const authCodeUrlParameters = { scopes: scopes, redirectUri: REDIRECT_URI, }; // 请求授权码并跳转 cca .getAuthCodeUrl(authCodeUrlParameters) .then((response) => { return res.send(response); }) .catch((error) => res.send(error)); }); router.get("/redirect", (req, res) => { // 使用重定向请求中的授权码构造令牌请求对象 const tokenRequest = { code: `${req.query.code}`, scopes: scopes, redirectUri: REDIRECT_URI, }; // 用授权码交换令牌 cca .acquireTokenByCode(tokenRequest) .then(async (response) => { res.send(response); }) .catch((error) => res.status(500).send(error)); });
解决方案
1. 修改Azure AD应用账户类型
问题核心是你的Azure AD应用注册被限制为仅允许组织内部账号登录,需调整为支持全量微软账号:
- 登录Azure门户,找到目标应用注册。
- 进入「概述」页面,找到「支持的账户类型」设置项。
- 将选项从「仅限此组织目录中的账户」切换为「任何组织目录中的账户和个人Microsoft账户(例如Skype、Xbox)」。
- 保存配置更改。
2. 调整MSAL的Authority配置
检查config中的authority字段:
- 若原配置为
https://login.microsoftonline.com/{你的租户ID},需改为https://login.microsoftonline.com/common(该值支持所有组织账号和个人微软账号)。 - 修改后重启应用,重新测试个人账号登录流程。
内容的提问来源于stack exchange,提问作者Matteo Robert
相关产品推荐
相关产品推荐

