【问题标题】:Microsoft Graph and access without a userMicrosoft Graph 和无用户访问
【发布时间】:2019-04-18 15:59:06
【问题描述】:

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

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

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

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。

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

【问题讨论】:

  • 错误信息是什么?
  • 我添加了一个显示应用程序权限的新屏幕截图,但仍有问题。错误消息是:令牌中需要存在 scp 或角色声明。

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


【解决方案1】:

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

【讨论】:

  • 虽然以上是正确的,我需要授予应用程序权限,但由于某种原因,这仍然对我不起作用。我正在查看我得到的解码令牌,它不包含任何角色。不知道在这里做什么。
  • 好的,您是否需要权限,然后按授予权限按钮?
  • 是的,然后它会打开一个浏览器尝试加载我的本地主机应用程序,但我收到错误:处理远程登录时遇到错误。 ---> System.Exception:关联失败。
  • 我的意思是 Azure 门户中的授予权限/授予管理员同意按钮。
  • 是的,有一个按钮,当点击它时,它会打开一个指向我的本地主机的浏览器窗口(这会引发错误)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多