【问题标题】:Msgraph Api Permissions and public callMsgraph Api 权限和公开调用
【发布时间】:2020-10-16 16:38:27
【问题描述】:
【问题讨论】:
标签:
azure-active-directory
microsoft-graph-api
microsoft-teams
microsoft-graph-sdks
【解决方案1】:
委派权限用于代表已登录用户调用 API。
如果 API 仅支持它们,则用户必须登录到您的应用程序,以便您可以代表他们调用 API。
刷新令牌允许您在不需要用户与应用程序交互的情况下长时间执行此操作,但这些令牌可以并且确实会过期。
另一种选择可能是使用 ROPC 流程,但这需要您使用用户名和密码来获取令牌,并且该用户不能启用 MFA,例如(ROPC 不起作用的许多情况之一)。
【解决方案2】:
应用程序可以使用两种主要机制来访问图表。一种是“应用程序”方法,需要管理员授予访问权限,然后才能访问某些服务/端点。通常有一个“应用程序机密”与应用程序“Id”一起使用。这有点类似于过去我们创建特定“服务”帐户+密码的方式。 ROPC 更相似,实际上 - 确实 - 需要用户名 + 密码,但通常不建议这样做。
另一个是“委托”,这意味着应用程序可以访问特定于该用户的某些资源(例如他们自己的邮箱)。在这种情况下,用户自己可能需要“批准”应用程序代表他/她访问图表的权利。
请注意,这两个选项都涉及使用 Azure AD 应用程序,但您可以使用哪个权限选项取决于您有兴趣调用的图表中的特定操作。例如,假设您想要访问 Teams 团队中的成员列表。这在here 中进行了解释,其中“权限”部分表示应用程序或委派权限可以用于执行此操作。相比之下,here 是另一种只能通过委托权限完成的操作,而不是在没有用户授予访问权限的情况下由独立应用程序完成。