Microsoft Graph和无用户访问

时间:2019-04-18 15:59:07

标签: c# azure azure-active-directory microsoft-graph microsoft-graph-sdks

我试图使用在ASP.NET Core应用程序中经常运行的后台任务(守护程序)在线上传和下载共享点中的文件。因为这是后台任务,所以不使用任何用户身份。相反,我尝试遵循此document,使用https://graph.microsoft.com/.default范围获取访问令牌,并使我的企业应用程序在Azure上具有已由管理员授予的特定权限。 admin consent

我可以使用我的应用的客户端ID和密码获取访问令牌。但是,当我尝试在共享点上的特定站点上请求驱动器时,它只是停顿了,提示我无法到达路径。当我改用我的用户凭证时,我可以达到相同的路径。

我认为我可能缺少某个步骤或一些与天蓝色的管理相关的任务。下面是显示我可以获取访问令牌但在获取驱动器时停滞的代码段。

var client = new ConfidentialClientApplication(id, uri, cred, null, new SessionTokenCache());
var authResult = await client.AcquireTokenForClientAsync(new[] {"https://graph.microsoft.com/.default"});
var token = authResult.AccessToken;  // get token successfully
var graphServiceClient = new GraphServiceClient(new DelegateAuthenticationProvider(async request => {request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token)}));
// stalls below
var drives = await graphServiceClient.Sites[<sharepoint_host>].SiteWithPath(<known_path>).Drives.Request().GetAsync(); 

在ASP.NET Core 2应用程序中使用Microsoft Graph SDK。

编辑:以下是更新的屏幕截图,显示了已添加并同意的应用程序权限: updated screenshot

1 个答案:

答案 0 :(得分:3)

根据您的图像,您已授予该应用程序的委派权限。您需要授予应用程序权限。委派权限仅在代表用户执行操作时适用。