Microsoft Graph,上传到sharepoint驱动器:调用者未经过身份验证

时间:2017-08-07 13:09:48

标签: c# azure sharepoint office365 microsoft-graph

我的应用程序上的这项工作托管于 localhost

window.navigator.pointerEnabled

但是当我在azure上将生产服务器上的应用程序上传为webapp时。

我通过尝试按ID查找sharepoint网站并创建上传会话来获得此错误。

外: Microsoft.Graph.ServiceException:代码:itemNotFound 消息:找不到资源。

内在: Microsoft.Graph.ServiceException:代码:unauthenticated 消息:呼叫者未经过身份验证。

为什么它适用于localhost而不是我的azure应用程序? 应用程序注册对于开发和生产是不同的,但权限是相同的。

我知道的唯一区别是我之后添加了 Sites.Read.All 权限,而不是在我https://apps.dev.microsoft.com/注册了该应用的应用时。

我正在使用Microsoft Graph客户端获取访问令牌。 我也尝试删除所有脱机令牌,但它不起作用。

如果我在添加权限 Sites.Read.All 时记得正确,我收到了新的同意请求。

在应用中启用了权限: email,Files.Read,Files.ReadWrite,File.ReadWrite.AppFolder,offline_access,openid,profile,Site.Read.All,User.Read

有什么不对吗?

生产登录:

"https://graph.microsoft.com:443/v1.0/sites/test.sharepoint.com,edc2dd46-cea8-4b10-a872-cd1a55ba4529,b14c0787-d4c1-4f4a-9a6c-7e010d794be9/drives/b!Rt3C7ajOEEuocs0aVbpFKYcHTLHB1EpPmmx-AQ15S-nygMtHkkWNRaaOc2GebusJ/items/01VI7PMEF6Y2GOVW7725BZO354PWSELRRZ?%24filter=folder ne null&%24select=id%2cfolder%2cname%2cparentReference%2cwebUrl"

"https://graph.microsoft.com:443/v1.0/sites/test.sharepoint.com,edc2dd46-cea8-4b10-a872-cd1a55ba4529,b14c0787-d4c1-4f4a-9a6c-7e010d794be9/drives/b!Rt3C7ajOEEuocs0aVbpFKYcHTLHB1EpPmmx-AQ15S-nygMtHkkWNRaaOc2GebusJ/items/01VI7PMEF6Y2GOVW7725BZO354PWSELRRZ?%24filter=folder ne null&%24select=id%2cfolder%2cname%2cparentReference%2cwebUrl"

"https://graph.microsoft.com:443/v1.0/sites/test.sharepoint.com,edc2dd46-cea8-4b10-a872-cd1a55ba4529,b14c0787-d4c1-4f4a-9a6c-7e010d794be9/drives/b!Rt3C7ajOEEuocs0aVbpFKYcHTLHB1EpPmmx-AQ15S-nygMtHkkWNRaaOc2GebusJ/root:/Presentation.en-GB.pptx:/microsoft.graph.createUploadSession"

本地登录:

{
 typ: "JWT",
 alg: "RS256",
 kid: "VWVIc1WD1Tksbb301sasM5kOq5Q"
}.
{
 aud: "f53962c3-2bd4-4302-adcf-49d9a93ccef0",
 iss: "https://login.microsoftonline.com/GUID/v2.0",
 iat: 1502142424,
 nbf: 1502142424,
 exp: 1502146324,
 aio: "ATQAy/8DAAAAo99zdMc3jCP7sR8Zw0iKijdu1Nv2AeJOpJ65OHtXb0o8QjTm9O320mHxIAv5tWJw",
 c_hash: "APreKq7N3Y0oG8SP6ipZdA",
 name: "First name Last name",
 nonce: "636377394901824543.ZWQ4MGVkYmEtYTMzMS00ZDUyLTgzZmYtYWFjMmRkNWRjNzhhNTAxMWUyYzItOGNhNi00N2IzLTk5MGEtMTVmYTlhYzBkNDVk",
 oid: "4f64d4db-8115-4f19-8554-bedf20688226",
 preferred_username: "firstname.lastname@company.com",
 sub: "rxGHRTX9YHogzaC_HgOmXvoKJ0Xye6Rk5HPAjLphQRc",
 tid: "34e9a1f3-23e1-4ead-b2fd-41660c25cc47",
 ver: "2.0"
}.

还阅读评论以了解更多详情。

1 个答案:

答案 0 :(得分:1)

我在登录后使用http://calebb.net/在令牌上找到了错误。

Azure应用注册缺少权限 Files.ReadWrite.All ,但开发没有,但权限以某种方式包含在范围内。

Azure中的错误?如果我没记错的话,我在应用注册中包含了很多权限,然后删除了大部分权限,包括Files.ReadWrite.All。

即使我的WebApp未在范围和应用程序注册中包含权限,但每个应用程序注册的现有用户范围内都保留了Files.ReadWrite.All权限。这就是它适用于开发环境的原因。

谢谢Marc LaFleur - MSFT。