【问题标题】:Microsoft Graph API: Limiting MSAL Python Daemon app to individual user accessMicrosoft Graph API:将 MSAL Python 守护程序应用程序限制为单个用户访问
【发布时间】:2021-04-12 22:25:04
【问题描述】:

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

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

所以我的问题是:

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

谢谢!

【问题讨论】:

    标签: python azure microsoft-graph-api msal


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 关于这个缺点 - 知道 Azure 团队是否计划提出一个身份验证流程来帮助构建具有委托权限的守护程序应用程序?处理不知道何时到期的刷新令牌很痛苦。如果我想通过我的 O365 帐户可访问的文件自动执行某些操作,而无需访问组织中的所有文件,这似乎是一个典型案例。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多