Microsoft Graph 和无需用户即可访问

Los*_*les 1 c# azure azure-active-directory microsoft-graph-sdks microsoft-graph-api

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

我可以使用我的应用程序的客户端 ID 和机密获取访问令牌。但是,当我尝试在 sharepoint 上的特定站点上请求驱动器时,它只是停顿,提示我它无法到达路径。当我使用我的用户凭据时,我可以完全正常地到达相同的路径。

我想我可能遗漏了一个步骤或一些与管理相关的任务。下面的代码片段显示我可以获得访问令牌,但在获取驱动器时停止。

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(); 
Run Code Online (Sandbox Code Playgroud)

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

编辑:以下是显示添加和同意的应用程序权限的更新屏幕截图: 更新截图

juu*_*nas 5

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