Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 在应用程序模式下通过Microsoft Graph访问广告用户OneDrive for Business_Azure_Onedrive_Microsoft Graph Api - Fatal编程技术网

Azure 在应用程序模式下通过Microsoft Graph访问广告用户OneDrive for Business

Azure 在应用程序模式下通过Microsoft Graph访问广告用户OneDrive for Business,azure,onedrive,microsoft-graph-api,Azure,Onedrive,Microsoft Graph Api,在应用程序模式下运行时,是否可以使用Microsoft Graph API访问用户OneDrive for Business文件夹和文件 我已经成功地在Azure AD中配置了应用程序(带有证书等),我已经能够获得承载令牌,并且我还成功地从某些端点请求数据。但是:我无法与OneDrive for Business文件夹或文件的用户一起工作 在其他情况下,我使用服务帐户(具有完全管理权限的用户帐户)对用户OneDrive中的文件夹和文件执行CRUD操作,但这需要我检查(并设置)在任何CRUD操作之

在应用程序模式下运行时,是否可以使用Microsoft Graph API访问用户OneDrive for Business文件夹和文件

我已经成功地在Azure AD中配置了应用程序(带有证书等),我已经能够获得承载令牌,并且我还成功地从某些端点请求数据。但是:我无法与OneDrive for Business文件夹或文件的用户一起工作

在其他情况下,我使用服务帐户(具有完全管理权限的用户帐户)对用户OneDrive中的文件夹和文件执行CRUD操作,但这需要我检查(并设置)在任何CRUD操作之前对所有文件夹和文件的权限,并在“文件和文件夹权限设置”中将服务帐户公开给用户。在应用程序模式下使用Graph API时,我假设所有这些问题都消失了

我举了一些例子来说明什么是有效的,更重要的是,还有一些是无效的:

  • graph.microsoft.com/v1.0/users
    返回没有问题的用户列表

  • graph.microsoft.com/v1.0/users/UPN-PLACEHOLDER
    返回有关指定用户的信息,没有问题

  • graph.microsoft.com/v1.0/users/UPN-PLACEHOLDER/drive
    返回有关指定用户驱动器的信息,没有问题

  • graph.microsoft.com/v1.0/users/UPN-PLACEHOLDER/drive/root
    返回有关指定用户的信息,驱动器根目录没有问题

  • graph.microsoft.com/v1.0/users/UPN-PLACEHOLDER/drive/root/children
    不按预期返回有关指定用户驱动器根子级的信息

  • graph.microsoft.com/v1.0/drives/UPN-PLACEHOLDER/root/children
    不按预期返回有关指定用户驱动器根子级的信息

  • graph.microsoft.com/v1.0/drives/DRIVE-ID-PLACEHOLDER/root/children
    不按预期返回有关指定用户驱动器根子级的信息

其他说明:

  • 如果我使用常规用户帐户和«/me»关键字登录,或者如果我使用服务帐户(具有完全管理权限)和UPN登录其他用户帐户,则所有这些端点都会按预期工作,但在应用模式下,UPN的所有信息请求都会返回empy,而不是根用户(即根用户/子用户或特定文件夹)
  • 我们尝试使用SDK抽象和纯HTTP请求,但都没有成功
  • 我们已经尝试了很多不同的应用程序权限组合,目前拥有所有应用程序权限

您无法执行此操作的原因是我们尚未公开任何仅应用程序访问OneDrive文件的权限。这是我们正在进行的工作,并希望很快曝光。请继续关注我们的网站,我们将在添加此功能时通知大家


希望这有帮助,

我正在使用AAD v2,在Microsoft应用程序注册门户中注册了该应用程序。一旦管理员通过包含租户id和客户端id的应用程序同意url同意应用程序,应用程序就可以使用应用程序修改权限访问所有用户的驱动器和文件。因此,您的场景现在是可能的,只是想添加该信息,因为接受的答案似乎过时了。

仅应用程序令牌中存在哪些角色?好的,谢谢您的快速回复。因此,如果我理解正确:当我使用clientid、secret和certificate请求令牌时,我拥有Azure AD左侧下拉列表中的权限(应用权限),当我使用clientid、secret、用户名和密码请求令牌时,我拥有Azure AD右侧下拉列表中的权限(委托权限)?哦,还有另一个快速跟进问题:我可以使用Graph SDK使用clientid、secret、用户名和密码请求令牌吗?我已经尝试过了,但没有成功,现在使用了“手动”http post,但我更愿意在两种情况下使用相同的技术来获取令牌。我根本找不到AcquireTokenAsync()的任何重载,这些重载将clientid、secret、username和password作为字符串,或者使用ClientCredential和UserPasswordCredential(带或不带证书)。我发现了一些使用UserCredentials的例子,但在v3中这些似乎已经改变了。