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

如何通过Graph API获取无效用户名尝试的日志?

问题解答

核心原因

这类无效用户名的登录尝试不会被记录在auditLogs/signIns端点,属于Azure AD的设计限制。当Azure AD检测到请求中的用户名不存在于租户目录时,不会生成完整的登录会话记录,因此无法通过该端点查询到对应事件。

可行的替代方案

1. 使用Azure AD Identity Protection的风险检测端点

如果你的租户拥有Azure AD Premium P1/P2许可证,可以通过identityProtection/riskDetections端点获取这类事件:

  • 调用示例:
    GET https://graph.microsoft.com/v1.0/identityProtection/riskDetections?$filter=riskEventType eq 'userNotFound'
    
  • 权限要求:IdentityRiskEvent.Read.All
  • 这类事件会被标记为userNotFound类型的风险检测,包含请求的相关元数据(如时间、客户端信息、错误详情等)。

2. 调整登录日志的筛选逻辑

部分场景下这类事件可能会出现在auditLogs/signIns中,可调整筛选条件尝试查询:

  • 不要仅依赖correlationId(部分场景下该ID不会关联到登录日志),改用错误代码筛选:
    GET https://graph.microsoft.com/v1.0/auditLogs/signIns?$filter=status/errorCode eq '50034'
    
  • 注意:需确保应用已被授予AuditLog.Read.All和Directory.Read.All权限,同时等待日志同步延迟(最长15分钟),这种方式仅在部分场景下有效。

3. 导出到Azure Monitor Log Analytics

将Azure AD登录日志导出到Log Analytics工作区后,可通过Kusto查询精准检索这类事件:

SigninLogs
| where ResultType == "50034"
| where ResultDescription contains "does not exist in the directory"

你也可以通过Azure Monitor的API查询这些日志数据,但这不属于Graph API范畴。

总结

  • 无AAD Premium许可证的租户:这类无效用户名尝试无法通过Graph API直接获取,属于Azure AD的基础版限制。
  • 有AAD Premium P1/P2许可证的租户:使用identityProtection/riskDetections端点是最可靠的解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:18:25