Angular SPA对接Entra客户外部ID时令牌获取报错AADSTS131010
解决方案:AADSTS131010 User not allowed by policy conditions 错误处理
针对你遇到的令牌获取失败错误,以下是针对性的排查和解决步骤:
检查用户流配置
登录Entra管理中心,进入客户租户的「外部标识」->「用户流」页面,查看关联到应用的用户流:- 确认用户流已启用「颁发访问令牌」和「颁发ID令牌」选项;
- 检查用户流的「属性」设置,是否存在未完成的强制步骤(比如邮箱验证),新创建的个人邮箱账号若未完成验证,可能会被策略阻止获取令牌。
验证应用注册的权限与范围
进入应用注册的「API权限」页面:- 确保已添加正确的委托权限(如Microsoft Graph的
User.Read),确认权限状态正常; - 核对
auth-config.ts中的scope参数,确保和应用注册中配置的权限范围完全匹配,避免拼写或格式错误。
- 确保已添加正确的委托权限(如Microsoft Graph的
确认用户账号状态
在Entra的「用户」->「所有用户」中找到该个人邮箱账号:- 检查账号「账户状态」是否为「启用」;
- 查看「验证详细信息」,确认用户已完成邮箱验证(部分租户策略要求验证后才能获取令牌)。
核对auth-config.ts核心配置
确保以下参数完全正确:clientId: 应用注册的客户端ID;authority: 格式应为https://<tenant-name>.ciamlogin.com/<tenant-id>/v2.0或关联用户流的具体authority;redirectUri: 必须和应用注册中「单页应用」配置的重定向URI完全一致,包括协议和路径。
查看Entra日志详情
在Entra管理中心的「监控」->「日志」中,通过trace_id或correlation_id定位失败请求:- 查看「详细信息」中的
failureReason和policyName字段,明确是哪个策略(条件访问、用户流或权限策略)阻止了请求,再针对性调整。
- 查看「详细信息」中的
排查PKCE流程配置
确保SPA应用注册中已启用「允许公共客户端流」,且示例代码中的PKCE流程未被修改,确认code_verifier和code_challenge参数生成逻辑正常。
内容的提问来源于stack exchange,提问作者theblindprophet
相关产品推荐
相关产品推荐

