【问题标题】:Microsoft Graph API code-base solution to access a user OneDrive用于访问用户 OneDrive 的 Microsoft Graph API 代码库解决方案
【发布时间】:2021-05-03 13:19:44
【问题描述】:

我想要访问特定工作用户的 OneDrive。我可以在 Azure AD 中注册一个应用程序并分配两种权限类型之一(委托或应用程序)。
基于Microsoft Documentation,如果我注册一个具有应用程序级访问权限的应用程序,它可以访问所有用户的驱动器,并且基于Stackoverflow 中的this question,没有办法限制对特定驱动器的访问。所以我忽略了这种方法。
另一方面,基于Microsoft Documentation,如果我想将委托权限分配给定义的应用程序,我必须在同意页面上手动批准访问列表。这对我来说是不希望的,因为我正在寻找在场景常规基础之​​后运行的代码库解决方案。

是否有任何解决方案可以让我通过 python 代码访问特定的 OneDrive?

【问题讨论】:

  • 如果您只想连接 1 个用户的 Onedrive,您可以使用 ROPC flow,它可以在您的场景中使用。但出于安全考虑,微软不建议这样做。
  • 它对您有帮助吗?
  • 问题是此解决方案将阻止需要多因素身份验证的用户。我正在使用的当前用户正在使用 MFA,因此我需要使用新定义的用户尝试此解决方案。我会尝试看看它是如何工作的。
  • @ShivaKeshavVarma,我使用了 ROPC,似乎可以解决我的问题。我在这个问题中找到了更详细的答案:stackoverflow.com/questions/42624144/…
  • 很高兴它对你有用@Amir,我可以在答案框中回答这个问题吗?

标签: python azure oauth-2.0 microsoft-graph-api onedrive


【解决方案1】:

如果您只想连接 1 个用户的 Onedrive,您可以使用 ROPC flow,它可以在您的场景中使用。但出于安全考虑,微软不建议这样做。是的,如果您启用了 MFA,则无法使用它。

【讨论】:

    【解决方案2】:

    最好的建议之一是使用Graph API for OneDrive

    例如,其中一个用例可以是Get current user's OneDrive

    登录用户的驱动器(使用委托身份验证时)可以 可以从 me 单例访问。

    如果用户的 OneDrive 未预配,但用户有许可证 使用 OneDrive,此请求将自动配置用户的 驱动器,当使用委托身份验证时。

    Http 请求:

    GET /me/drive
    

    可帮助您从 Python 调用 Graph API 的资源:

    https://github.com/microsoftgraph/python-security-rest-sample

    编辑:


    此外,我找到了一种可以禁用用户同意的方法。

    通过 Azure 门户configure user consent settings

    1. 以全局管理员身份登录 Azure 门户。
    2. 选择 Azure Active Directory > 企业应用程序 > 同意和权限 > 用户同意设置
    3. 用户同意应用程序下,选择不允许用户同意
    4. 选择保存以保存您的设置。

    如果您想要除此之外的同意权限,您可以design your own Consent

    【讨论】:

    • 正如我提到的,我已经测试过这种方法,问题是我必须手动批准对 OneDrive 的访问。您可以在链接的“获得管理员同意查看安全数据”部分中找到它。我正在寻找一种可以定期运行代码而无需手动批准访问的解决方案。
    • 嘿,你没有提到同一个链接。让我找到合适的细节
    • 我没有提到相同的链接,但我在第 2 段中确实提到我尝试了这个解决方案,但它对我不起作用。无论如何,谢谢你的时间
    • 检查更新的响应。如果它回答了您的问题,请告诉我。
    • 这是微软推荐的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2020-02-28
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多