在移动应用程序中,我们正在生成一些图像,我们希望将这些图像上传到客户的云中。 客户端正在使用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),但是我对这种身份验证可以授予对OneDrive的访问权限并不百分百清楚。 https://docs.microsoft.com/en-us/graph/auth-v2-service
由于我对Microsoft云基础架构一点都不熟悉,因此希望了解一些信息。
实际上是否可以访问使用应用程序自身身份进行身份验证的OneDrive文件夹?
答案 0 :(得分:1)
是的,应该可以使用应用程序标识(即无需用户登录)使用Microsoft Graph API和一个驱动器文件
应该有用的REST API
请知道有许多可用于Microsoft Graph API的SDK /客户端库,您可以根据平台使用它们。例如Microsoft Graph .NET Client Library。正如您提到的Only REST一样,我在这里提供了直接REST API的链接。
上传文件(最大4 MB)-Upload REST API
所需的最低权限为Files.ReadWrite.All
(在应用程序权限下,此应用程序权限首先需要管理员同意。如果您不熟悉同意流程,请在此处查看:Azure AD Consent Framework并在评论中提及,如果需要,我可以添加更多细节)
身份验证
从流程的角度出发,您将需要使用 OAuth 2.0 Client Credentials Grant Flow to authenticate
注意:请注意,此流程仅适用于机密客户。因此,您不应该直接从移动客户端甚至台式机客户端(例如WPF或控制台应用程序)中使用它,因为这些客户端无法安全地处理客户端机密。您的移动客户端应调用一个后端API,该API可以依次调用Microsoft Graph并使用客户端机密,就像使用“应用程序”权限的守护程序一样。
在此链接的末尾有.NET Core 2.1和ASP.NET MVC的代码示例。