无法创建Microsoft Graph API订阅,遭遇401未授权错误求助
解决Microsoft Graph订阅创建401未授权错误的方案
1. 验证Graph权限配置
创建用户资源的变更通知订阅,需至少拥有以下权限之一(需管理员提前同意):
User.Read.All(应用权限/委托权限)Directory.Read.All(应用权限/委托权限)
执行Connect-MgGraph时必须明确指定所需权限,示例:
# 交互式登录并请求权限 Connect-MgGraph -Scopes "User.Read.All", "Directory.Read.All" # 若使用应用身份(非交互式场景),需先在Azure AD注册应用并配置权限,再通过以下方式登录 Connect-MgGraph -ClientId "你的应用ID" -TenantId "你的租户ID" -ClientSecret (ConvertTo-SecureString "你的客户端密钥" -AsPlainText -Force)
登录后执行Get-MgContext,确认返回的Scopes列表包含上述所需权限。
2. 核对Event Grid合作伙伴主题配置
你使用的EventGrid:格式通知URL需满足以下要求:
- Azure订阅ID、资源组名称、合作伙伴主题名称完全匹配Azure门户中的实际配置,无拼写或大小写错误
- 合作伙伴主题已完成验证(Event Grid要求主题必须通过验证才能接收外部推送)
- 已为Microsoft Graph服务主体授予访问该主题的权限:
在Azure门户的合作伙伴主题页面,进入「访问控制(IAM)」,添加「Event Grid数据发送者」角色分配,主体选择「Microsoft Graph」服务主体。
3. 修正订阅参数细节
- expirationDateTime:确保生成UTC时区的ISO 8601格式时间,可修改参数为:
expirationDateTime = (Get-Date).AddMinutes(4000).ToUniversalTime().ToString("o") - resource参数:
"users"是全局用户订阅的合法值,若需订阅特定用户子集可调整为"users/{userId}",全局订阅无需修改。
4. 排查认证上下文有效性
执行以下命令检查当前Graph连接状态:
Get-MgContext
确认:
TenantId是目标租户的正确IDAccount或AppId对应已授权权限的身份- 无过期或无效的令牌信息
若上下文异常,重新执行Connect-MgGraph完成登录,确保登录过程中未出现权限拒绝提示。
内容的提问来源于stack exchange,提问作者Red Star
相关产品推荐
相关产品推荐

