Azure active directory Microsoft Graph,正在注册架构扩展
我正在构建一个使用MicrosoftGraphAPI的内部会议室应用程序,我想用模式扩展来扩展事件对象 文件:Azure active directory Microsoft Graph,正在注册架构扩展,azure-active-directory,office365,microsoft-graph-api,Azure Active Directory,Office365,Microsoft Graph Api,我正在构建一个使用MicrosoftGraphAPI的内部会议室应用程序,我想用模式扩展来扩展事件对象 文件: 但是,当运行查询以注册新架构扩展时,我收到以下HTTP响应: { "url": "https://graph.microsoft.com/beta/schemaExtensions", "status": "403 Forbidden", "headers": { "request-id": "e1e36210-6c4c-4ed8-afb
{
"url": "https://graph.microsoft.com/beta/schemaExtensions",
"status": "403 Forbidden",
"headers": {
"request-id": "e1e36210-6c4c-4ed8-afb1-c9ee6f6362ed",
"client-request-id": "e1e36210-6c4c-4ed8-afb1-c9ee6f6362ed",
"x-ms-ags-diagnostic": "{\"ServerInfo\":{\"DataCenter\":\"North Europe\",\"Slice\":\"SliceA\",\"ScaleUnit\":\"001\",\"Host\":\"AGSFE_IN_2\",\"ADSiteName\":\"DUB\"}}",
"duration": "742.4624"
},
"body": {
"error": {
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
"innerError": {
"request-id": "e1e36210-6c4c-4ed8-afb1-c9ee6f6362ed",
"date": "2017-05-10T10:05:37"
}
}
}
}
我可以确认我的应用程序具有Directory.AccessAsUser.All的先决条件作用域权限,并且自添加此权限以来已超过16小时。我还得到了已验证的域,因此根据文档参考,名称空间应该是正常的
我的API查询代码:
Outlook.test({
version: 'beta',
resource: 'schemaExtensions',
method: 'POST',
body: {
id: 'thehivegroup_beethere',
description: 'Extension for event presence status',
targetTypes: [ 'Event' ],
properties: [
{ name: 'checkIn', type: 'String' },
{ name: 'checkOut', type: 'String' }
]
}
})
.then(result => console.log(result), err => console.error(err))
这会产生一篇帖子,帖子正文中编码了JSON,标题中带有URLhttps://graph.microsoft.com/beta/schemaExtensions
我尝试了不同的ID,例如beethere
,这导致了名称空间错误,所以我知道这应该可以正常工作
我知道这里也没有需要启用的其他作用域权限。这个错误对我来说太模糊了,我不知道这里哪些特权是不够的
编辑:已在中以租户管理员的身份手动运行查询,添加了API所需的作用域权限以及一些额外的权限,但注册架构扩展的查询仍然不起作用,并且与应用程序收到的错误消息相同。因此,这在我的代码中肯定不是问题,而是Microsoft Graph API。是否有联系方式或方法要求microsoft调查此问题?此创建REST的模式扩展对我很有效。请确保令牌包含
目录.AccessAsUser.All
权限。您可以从此解析令牌并检查其中的scp
声明。创建REST的模式扩展对我来说很好。请确保令牌包含目录.AccessAsUser.All
权限。您可以从此解析令牌并检查其中的scp
声明。Directory.AccessAsUser.All仅为委派权限(必须委派权限,因为它授予登录用户对基于目录的API的访问权限)。它不会出现在角色声明中,因为它不是应用程序权限
据我所知,您不能使用应用程序流(客户端凭据)来创建模式扩展,您需要使用“代码授权”流。请让我们知道这是否是一项要求。此外,我们还想知道您是否希望在应用程序注册中看到模式定义注册的体验
此外,当前无法通过图形资源管理器创建(或管理)架构扩展定义。要创建定义,您必须是创建扩展定义的应用程序的管理员或所有者,并且创建请求也必须来自该应用程序(不能是graph explorer)。我们可以考虑放松这最后一个限制
如果你想看到这方面的代码片段,可以在这里找到(虽然这是一个UWP c#应用程序,而不是JS):
此外,模式扩展现在是GA,并且在v1.0端点中可用
希望这能有所帮助,Directory.AccessAsUser.All只是一个委派权限(必须委派权限,因为它授予登录用户对基于目录的API的访问权限)。它不会出现在角色声明中,因为它不是应用程序权限 据我所知,您不能使用应用程序流(客户端凭据)来创建模式扩展,您需要使用“代码授权”流。请让我们知道这是否是一项要求。此外,我们还想知道您是否希望在应用程序注册中看到模式定义注册的体验 此外,当前无法通过图形资源管理器创建(或管理)架构扩展定义。要创建定义,您必须是创建扩展定义的应用程序的管理员或所有者,并且创建请求也必须来自该应用程序(不能是graph explorer)。我们可以考虑放松这最后一个限制 如果你想看到这方面的代码片段,可以在这里找到(虽然这是一个UWP c#应用程序,而不是JS): 此外,模式扩展现在是GA,并且在v1.0端点中可用
希望这有帮助,图形浏览器能够添加扩展。 您需要在租户中创建应用程序,并将有效负载中的所有者设置为应用程序的客户端id
图形浏览器可以添加扩展。 您需要在租户中创建应用程序,并将有效负载中的所有者设置为应用程序的客户端id
但是,无论如何,对架构扩展的完全相同的REST调用在Graph Explorer中失败,我们为
目录.AccessAsUser.All
权限范围的管理员帐户授予并同意了管理员权限。这是否意味着Graph Explorer的标记也没有正确包含范围?我将检查应用程序上的访问令牌中的角色,并查看如何使用基于服务器的授权流。好的,我正在使用应用程序的客户端凭据流,但我没有看到任何“scp”,但角色数组缺少目录.AccessAsUser.All
访问令牌中的权限范围。我很困惑,因为我们已经在Azure门户中为应用程序预先配置了相同的权限范围,但由于某些原因,我们没有收到令牌的权限范围。我可以尝试迁移到Azure AD v2.0,但我们的应用程序是围绕当前的adal节点客户端库构建的,我怀疑这个新版本没有支持客户端凭据的JS库。但是,无论如何,对架构扩展的完全相同的REST调用在Graph Explorer中失败,我们授予并同意管理员帐户的管理员权限