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

Java实现Azure AD用户名密码流认证时出现令牌不存在及404服务异常

异常原因分析

你遇到的异常分为两层,第一层 com.microsoft.aad.msal4j.MsalClientException: Token not found in the cache 是首次运行的预期行为:此时缓存中没有对应账户的令牌,静默获取必然失败,程序会自动降级到走用户名密码主动请求令牌,真正的根因是降级请求阶段抛出的404服务异常。

触发404错误的常见原因如下:

  • 用户名格式错误(最高概率):你的示例代码中username仅填写了testuser前缀,没有使用完整的UPN格式(比如testuser@你的租户域名.onmicrosoft.com)。MSAL执行用户发现请求时需要依赖用户名的域名部分拼接请求地址,仅填前缀会导致请求路径错误,返回404。
  • authority配置错误:
    • 检查你替换的{tenantId}是否存在拼写错误,确认是你的Azure AD租户的正确租户ID或者根域名
    • 如果登录账户是个人微软账户(@outlook.com、@hotmail.com等),需要将authority改为https://login.microsoftonline.com/consumers,不能指定固定租户ID
    • 如果需要同时支持企业/学校账户和个人微软账户,将authority改为https://login.microsoftonline.com/common
  • 租户策略限制:确认你的Azure AD租户没有禁用用户名密码流,且登录账户没有开启多因素认证(MFA),开启MFA的账户无法使用该认证流。
  • 网络拦截:检查本地网络的防火墙、代理规则是否拦截了指向login.microsoftonline.com的请求,导致返回第三方404响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:51:00