Microsoft Graph 和无用户访问
Microsoft Graph and access without a user
我正在尝试使用 ASP.NET 核心应用程序中经常运行的后台任务(守护进程)在线上传和下载我的共享点中的文件。因为它是后台任务,所以不使用用户身份。相反,我试图遵循这个 document, getting an access token using the https://graph.microsoft.com/.default
scope, as well as having my enterprise app on azure having particular permissions already granted by the admin.
我可以使用我的应用程序的客户端 ID 和密码获取访问令牌。但是,当我尝试在 Sharepoint 上的特定站点上请求驱动器时,它只是停止,提示我它无法到达路径。当我改用我的用户凭据时,我可以完全顺利地到达相同的路径。
我想我可能遗漏了一个步骤或一些与 Azure 管理相关的任务。下面是显示我可以获取访问令牌但在获取驱动器时停止的代码片段。
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。
编辑:下面是更新后的屏幕截图,显示添加并同意的应用程序权限:
根据您的图片,您已向该应用授予委派权限。您需要授予应用程序权限。委派的权限仅在代表用户行事时适用。
我正在尝试使用 ASP.NET 核心应用程序中经常运行的后台任务(守护进程)在线上传和下载我的共享点中的文件。因为它是后台任务,所以不使用用户身份。相反,我试图遵循这个 document, getting an access token using the https://graph.microsoft.com/.default
scope, as well as having my enterprise app on azure having particular permissions already granted by the admin.
我可以使用我的应用程序的客户端 ID 和密码获取访问令牌。但是,当我尝试在 Sharepoint 上的特定站点上请求驱动器时,它只是停止,提示我它无法到达路径。当我改用我的用户凭据时,我可以完全顺利地到达相同的路径。
我想我可能遗漏了一个步骤或一些与 Azure 管理相关的任务。下面是显示我可以获取访问令牌但在获取驱动器时停止的代码片段。
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。
编辑:下面是更新后的屏幕截图,显示添加并同意的应用程序权限:
根据您的图片,您已向该应用授予委派权限。您需要授予应用程序权限。委派的权限仅在代表用户行事时适用。