首页 > 解决方案 > Microsoft Graph API:将 MSAL Python 守护程序应用程序限制为单个用户访问

问题描述

我正在构建一个 Python 守护程序应用程序来下载单个 O365 用户可以通过 Graph API 访问的文件。我正在尝试在 MSAL 中使用 ConfidentialClientApplication 类进行授权。

据我了解 - 这需要“应用程序权限”(Azure AD 中的 API 权限)而不是“委派权限”,管理员必须同意 Files.Read.All。

所以我的问题是:

  1. 这是否意味着,在管理员同意后,我的应用程序将有权访问组织中的所有文件?
  2. 如何将 Daemon 应用程序的访问权限限制为只有单个用户(我的 O365 用户/UPN)才能访问的文件?
  3. 我是否应该使用不同的身份验证流程,其中用户同意也是流程的一部分:例如代表(或)交互式(或)用户名密码?

谢谢!

标签: pythonazuremicrosoft-graph-apimsal

解决方案


这是否意味着,在管理员同意后,我的应用程序将有权访问组织中的所有文件?

是的,这通常是应用程序权限的缺点。

如何将 Daemon 应用程序的访问权限限制为只有单个用户(我的 O365 用户/UPN)才能访问的文件?

我很确定您不能限制守护程序应用程序的 OneDrive 访问权限。例如,您可以限制守护程序应用程序的 Exchange 访问。

我是否应该使用不同的身份验证流程,其中用户同意也是流程的一部分:例如代表(或)交互式(或)用户名密码?

它肯定会允许您限制对特定用户的访问。一般来说,我建议您不要使用用户名+密码(ROPC);如果您的帐户具有例如 MFA,它将无法正常工作。更安全的方法是您需要使用授权代码流初始化守护程序应用程序一次。这为您的应用程序提供了一个刷新令牌,然后它可以在需要时使用它来获取用户的访问令牌(以及一个新的刷新令牌)。请注意,刷新令牌可能会过期,在这种情况下,用户需要再次初始化应用程序。


推荐阅读