如何通过Microsoft Graph API实现组织内全用户在线会议数据访问?
问题:通过Microsoft Graph API获取全组织在线会议数据遇到权限策略限制
背景与已尝试操作
目标是让单个应用无需指定单个用户,即可读取全公司的在线会议详情及转录文本。已在Azure AD中为应用授予以下应用权限:
OnlineMeetings.Read.AllOnlineMeetingTranscript.Read.AllUser.Read.All、Group.Read.All(其他相关权限)
预期凭借这些权限可访问组织内任意用户的会议详情,但调用以下API时收到错误:
https://graph.microsoft.com/v1.0/users/{user-id}/onlineMeetings/{meeting-id} https://graph.microsoft.com/v1.0/users/{user-id}/onlineMeetings/{meeting-id}/transcripts/{transcript-id}/content
错误响应:
{ "error": { "code": "General", "message": "No application access policy found for this app.", "innerError": { "request-id": "xxxx-xxxx-xxxx-xxxx", "date": "2024-08-13T19:47:25", "client-request-id": "xxxx-xxxx-xxxx-xxxx" } } }
核心目标:无需手动为每个用户或组分配访问策略,实现全公司范围的在线会议数据读取。
具体疑问
- 使用
OnlineMeetings.Read.All和OnlineMeetingTranscript.Read.All权限时,能否绕过应用访问策略实现全组织会议访问? - 若访问策略为必填项,有无更具扩展性的全组织应用方式,无需手动分配给每个用户或组?
- 通过Microsoft Graph API实现全组织在线会议访问,有无替代方法或最佳实践?
解答
1. 能否绕过应用访问策略?
不行,OnlineMeetings.Read.All和OnlineMeetingTranscript.Read.All这类应用权限必须搭配应用访问策略才能生效,这是微软的强制要求,没有绕过途径。即使授予了全范围应用权限,无对应策略授权的话,API仍会返回权限不足的错误。
2. 全范围应用访问策略的扩展性实现
不用逐个给用户或组分配,直接创建覆盖全组织的应用访问策略即可:
- 使用
MicrosoftTeamsPowerShell模块执行命令:
其中New-CsApplicationAccessPolicy -Identity "全组织会议访问策略" -AppIds "<你的应用ID>" -Description "允许应用访问全组织的在线会议数据" -GlobalScope-GlobalScope参数是核心,它会自动将策略应用到整个组织的所有用户,无需手动添加单个用户或组,完全满足扩展性需求。 - 执行后等待15-30分钟让策略生效,之后再调用API即可正常访问全组织会议数据。
3. 替代方法与最佳实践
- 最优方案就是使用全局范围的应用访问策略,这是微软官方推荐的全组织访问方式,配置一次即可覆盖所有用户,维护成本极低。
- 若需更精细的权限控制(比如仅允许访问特定部门会议),可结合Azure AD安全组,将目标用户加入组后给组分配策略,但针对全组织需求,全局策略是最适配的选择。
- 注意:应用访问策略仅针对在线会议相关API权限生效,其他Graph API权限(如
User.Read.All)无需额外策略,只要权限授予即可正常使用。
内容的提问来源于stack exchange,提问作者NoNam4
相关产品推荐
相关产品推荐

