【问题标题】:Microsoft Graph. Access OneDrive with application own identity微软图形。使用应用程序自己的身份访问 OneDrive
【发布时间】:2019-07-30 11:16:57
【问题描述】:

在一个移动应用程序中,我们正在生成一些我们想上传到客户云端的图像。 客户正在使用 OneDrive For Business,以及所有 360 套件(我还没有更多信息)。

我们想要做的是能够将图像存储在 OneDrive 帐户中,而无需用户登录。我发现的所有用于对 OneDrive 进行身份验证的文档都包含我们不使用的交互式登录过程不想: https://docs.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/graph-oauth?view=odsp-graph-online

我发现对于 Microsoft Graph,可以使用应用程序自己的身份登录(仅限 REST),但我并不是 100% 清楚这种身份验证是否可以授予对 OneDrive 的访问权限。 https://docs.microsoft.com/en-us/graph/auth-v2-service

由于我对 Microsoft 云基础架构一点也不熟悉,我希望能提供一些信息。

是否真的可以访问使用应用程序自己的身份进行身份验证的 OneDrive 文件夹?

【问题讨论】:

    标签: azure-active-directory microsoft-graph-api onedrive


    【解决方案1】:

    是的,应该可以使用应用程序身份使用 Microsoft Graph API 和 One drive 文件(即无需用户登录)

    应该有帮助的 REST API

    知道有许多可用于 Microsoft Graph API 的 SDK/客户端库,您可以根据自己的平台使用它们。例如Microsoft Graph .NET Client Library。正如你提到的 Only REST,我在这里提供了直接 REST API 的链接。

    1. 上传文件(最大 4 MB)-Upload REST API

      所需的最低权限为Files.ReadWrite.All(在应用程序权限下,此应用程序权限首先需要管理员同意。如果您不熟悉同意过程,请查看此处:Azure AD Consent Framework 并在 cmets 中提及,如果需要,我可以添加更多细节)

    2. 上传更大的文件 - Resumable Upload REST API

    身份验证

    从流程的角度来看,您需要使用 OAuth 2.0 Client Credentials Grant Flow to authenticate

    注意:请注意,此流程仅适用于机密客户。因此,您不应该直接从移动客户端甚至桌面客户端(如 WPF 或控制台应用程序)使用它,因为这些是无法安全处理客户端机密的公共客户端。您的移动客户端应调用后端 API,而后者又可以调用 Microsoft Graph 并使用客户端机密,就像使用应用程序权限的守护程序一样。

    在此链接的末尾有可用于 .NET Core 2.1 和 ASP.NET MVC 的代码示例。

    【讨论】:

    • 直接从移动应用程序使用客户端凭据流不是一个好主意。 App Id 和 Secret 需要包含在应用程序中,因此很容易通过检查找到。 App Only aka 客户端凭据流仅应在您可以保护应用程序机密的情况下使用。这方面的一个示例是与 OneDrive 交互的 API,并且您的移动应用程序调用该 API。然后,您可以在密钥到期时轻松更改密钥等...
    • 这是一个公平的观点@ChrisJohnson 直接从移动客户端应用程序或任何本机应用程序(甚至桌面控制台)使用客户端凭据流(clientid 和 secret)将是一个问题,因为它仅适用于可以安全处理机密。我回答的重点是最后一行,这是可能的。我的错,我应该澄清一下,如果计划使用移动客户端应用程序直接调用,您应该使用支持移动客户端并使用此流程与 Microsoft Graph 一起使用的后端 API(您自己的基于服务器的 API)。
    • @ChrisJohnson 我已更新答案以包含此内容。非常感谢您的关注和指出。
    猜你喜欢
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2017-04-12
    • 1970-01-01
    相关资源
    最近更新 更多