Microsoft Graph API:将MSAL Python守护程序应用程序限制为个人用户访问

Microsoft Graph API:将MSAL Python守护程序应用程序限制为个人用户访问,python,azure,microsoft-graph-api,msal,Python,Azure,Microsoft Graph Api,Msal,我正在构建一个Python守护进程应用程序,以下载O365用户可以通过Graph API访问的文件。我正在尝试使用MSAL中的机密ClientApplication类进行授权 据我所知,这需要“应用程序权限”(Azure AD中的API权限),而不是“授权权限”,管理员必须同意Files.Read.All 因此,我的问题是: 这是否意味着,在获得管理员同意后,我的应用程序将可以访问组织中的所有文件 如何将对守护程序应用程序的访问限制为只有个人用户(我的O365用户/UPN)可以访问的文件 我应该

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

据我所知,这需要“应用程序权限”(Azure AD中的API权限),而不是“授权权限”,管理员必须同意Files.Read.All

因此,我的问题是:

  • 这是否意味着,在获得管理员同意后,我的应用程序将可以访问组织中的所有文件
  • 如何将对守护程序应用程序的访问限制为只有个人用户(我的O365用户/UPN)可以访问的文件
  • 我应该使用不同的身份验证流,其中用户同意也是流的一部分:例如代表(或)交互式(或)用户名密码

  • 谢谢

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

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

    如何将对守护程序应用程序的访问限制为只有个人用户(我的O365用户/UPN)可以访问的文件

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

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


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

    关于这一缺点-是否知道Azure团队是否计划提出一个身份验证流来帮助构建具有委托权限的守护程序应用程序?处理不知道何时到期的刷新令牌是一件痛苦的事情。如果我想通过O365帐户访问文件而不需要访问组织中的所有文件,那么这似乎是一个典型的例子。非常感谢!