我正在构建一个 Python 守护程序应用程序来下载单个 O365 用户可以通过 Graph API 访问的文件。我正在尝试使用 MSAL 中的 ConfidentialClientApplication 类进行授权。
据我了解 - 这需要“应用程序权限”(Azure AD 中的 API 权限),而不是“委派权限”,管理员必须同意 Files.Read.All。
所以我的问题是:
- 这是否意味着,在管理员同意后,我的应用将有权访问组织中的所有文件?
- 如何将守护程序应用的访问权限限制为只有个人用户(我的 O365 用户/UPN)才能访问的文件?
- 我是否应该使用不同的身份验证流程,其中用户同意也是流程的一部分:例如代表(或)交互式(或)用户名密码?
谢谢!
最佳答案
这是否意味着,在管理员同意后,我的应用将有权访问组织中的所有文件?
是的,这通常是应用程序权限的缺点。
如何将对守护程序应用程序的访问权限限制为只有个人用户(我的 O365 用户/UPN)才能访问的文件?
我很确定您无法限制守护程序应用的 OneDrive 访问。例如,您可以限制守护程序应用程序的 Exchange 访问。
我是否应该使用不同的身份验证流程,其中用户同意也是流程的一部分:例如代表(或)交互式(或)用户名密码?
它肯定会允许您限制特定用户的访问权限。一般来说,我建议您不要使用用户名+密码(ROPC);如果您的帐户有例如,它将无法工作。艺术硕士。更安全的方法是您需要使用授权代码流程初始化守护程序应用程序一次。这将为您的应用程序提供一个刷新 token ,然后可以在需要时使用该刷新 token 为用户获取访问 token (以及新的刷新 token )。请注意,刷新 token 可能会过期,在这种情况下,用户需要再次初始化应用。
关于python - 微软图形API : Limiting MSAL Python Daemon app to individual user access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65608215/