使用MSAL调用Power Automate流时遭遇403禁止错误的技术问询
确认令牌受众与Power Automate资源匹配
虽然你设置了“租户内任意用户”认证,但要检查令牌里的aud(受众)声明是否对应Power Automate的资源——通常是https://service.flow.microsoft.com/或你的流所在环境的专属资源ID。你提到换Graph Scope能正常请求,说明之前可能用了Graph的Scope,要换成Power Automate对应的Scope,比如https://service.flow.microsoft.com/.default。补全应用注册的Power Automate权限
别只配置Graph权限,要在Azure AD应用注册里添加Power Automate的Delegated权限,比如Flow.Execute.All或Flow.Read.All(按需选择),并且完成管理员同意(如果是租户级权限的话)。没有这些权限,就算拿到令牌也没资格调用流。重新确认流触发器的身份验证设置
进入流的HTTP触发器配置页,确保选的是Azure AD身份验证,且“租户内任意用户”的设置已经生效。有时候保存后的配置会有缓存问题,建议重新保存触发器,再重新发布整个流。检查D365请求头与请求方法的正确性
除了Authorization: Bearer <令牌>,还要确保请求头里的Content-Type和流的接收格式匹配(比如application/json),同时请求方法(GET/POST)必须和流触发器设置的完全一致,错了就会直接403。给用户/用户组添加流的共享权限
默认只有流的创建者能访问,就算是租户内用户也不行。要手动把租户内的用户组(或全体用户)添加到流的共享列表里,授予“参与者”或“所有者”权限。验证令牌的权限声明
用jwt.io解析令牌时,看scp字段里有没有Power Automate相关的权限值,比如flow.execute。如果只有Graph的权限,说明请求令牌时的Scope还是错的,必须指定Power Automate的Scope。
内容的提问来源于stack exchange,提问作者Cassio Milanelo

