Spring Boot应用从ADAL迁移至MSAL遇AADSTS50194错误求解决方案
解决ADAL迁移MSAL时的AADSTS50194错误
首先咱们先理清这个错误的核心原因:你的应用primadollardev_solanapi被配置为单租户应用,但代码里使用了/common这个多租户认证端点。根据Azure AD的规则,2018年10月15日后创建的单租户应用不再支持/common端点,必须改用租户特定端点,或者把应用改成多租户模式。
下面给你两种可行的解决方案,你可以根据业务需求选择:
方案一:将应用配置为多租户(适合需要支持多个租户的场景)
如果你的业务需要允许其他租户的用户访问,那就把应用改成多租户:
- 登录Azure门户,找到你的应用注册(ID:
fd0ac989-0246-4999-b562-6d42d3636c22) - 进入概述页面,找到「支持的账户类型」选项
- 选择「任何组织目录中的账户(任何Azure AD目录 - 多租户)」;如果需要支持个人微软账户(比如Skype、Xbox),可以选更宽泛的「任何组织目录中的账户和个人Microsoft账户」选项
- 保存更改
修改后,你的MSAL代码里的authority可以继续使用https://login.microsoftonline.com/common,或者换成https://login.microsoftonline.com/organizations(仅针对工作/学校账户)。
方案二:使用租户特定的Authority(适合单租户业务场景)
如果你的应用只需要自己租户的用户访问,那就直接用租户专属的认证端点:
- 先获取你的租户ID(可以在Azure门户的「Azure Active Directory」→「概述」里找到),或者用租户域名(比如
your-tenant.onmicrosoft.com) - 修改MSAL代码里的
authority配置,把common替换成你的租户ID或域名:
// 替换成你的租户ID或者租户域名 String authority = "https://login.microsoftonline.com/your-tenant-id-or-domain"; ConfidentialClientApplication clientApplication = ConfidentialClientApplication.builder( clientId, ClientCredentialFactory.create(clientSecret)) .authority(authority) .build();
这种方式更适合单租户场景,也更安全,因为它只允许你自己租户的用户进行认证。另外记得检查应用注册的「支持的账户类型」是否设置为「仅此组织目录中的账户」,确保和单租户的配置匹配。
内容的提问来源于stack exchange,提问作者Prabhakar_Vajja
相关产品推荐
相关产品推荐

