You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置ADAL JS实现Azure AD认证后,外部Microsoft/Live账号无法登录

解决AADSTS50020错误:让Azure AD应用支持外部Microsoft/Live账号登录

这个错误其实很好理解——你的应用目前是单租户模式,只能允许你自己Azure AD租户(也就是提示里的"Default Directory")内的账号登录,外部的Microsoft/Live账号不在这个租户的用户列表里,所以被拒绝访问了。要搞定这个问题,咱们从Azure Portal配置到代码调整一步步来:

一、把Azure AD应用改成多租户模式

  1. 登录Azure Portal,找到你的应用注册(App Registrations)
  2. 选中你正在使用的应用,进入应用的详情页面
  3. 左侧菜单找到认证选项,点击进入
  4. 在「支持的账户类型」区域,把原来的「仅限此组织目录中的账户」改成「任何组织目录中的账户和个人Microsoft账户(例如Skype、Xbox)」
  5. 点击页面顶部的保存,等个几分钟让配置生效

二、确认应用权限配置没问题

  1. 还是在应用注册页面,左侧菜单选API权限
  2. 检查是否已经添加了User.Read这个委托权限(这是用户登录时获取基本信息的必要权限,默认应该已经有了,但保险起见确认一下)
  3. 如果没有的话,点击「添加权限」→ 选择Microsoft Graph → 选委托权限 → 找到并勾选User.Read → 最后点击「添加权限」

小贴士:多租户应用如果只用基础登录权限,不需要管理员同意,个人用户登录时自己授权就行

三、调整ADAL JS的代码配置

ADAL JS默认的配置可能是针对单租户的,咱们需要修改tenant参数:

  • 原来的tenant可能是你的租户ID或者域名,现在要改成common——这个值会引导用户到微软通用的登录端点,支持个人Microsoft账号和其他租户的企业账号登录
  • 给你个示例配置参考:
var authConfig = {
    clientId: '你的应用Client ID',
    tenant: 'common', // 重点:把这里改成common,替换原来的租户ID/域名
    redirectUri: '你的前端应用重定向URI',
    cacheLocation: 'localStorage'
};
var authContext = new AuthenticationContext(authConfig);

四、验证效果

  1. 先清一下浏览器缓存(避免旧的登录会话干扰)
  2. 重启你的前端应用,尝试用Microsoft/Live账号登录试试
  3. 如果还是有问题,再检查下Azure Portal里的应用注册是否确实保存了多租户设置,以及代码里的重定向URI和Portal里配置的是否完全一致

补充说明:改成多租户模式后,原来的内部AD账号仍然可以正常登录,不会影响现有用户的使用哦~

内容的提问来源于stack exchange,提问作者Juha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:24:35