azure-active-directory - 如何在多租户场景中使用 Azure Active Directory 架构扩展
问题描述
我想使用 Azure AD 架构扩展来扩展一个属性,我已经成功创建了一个 ID 为“ myverifiedaaddomain_extensionid
”的架构扩展。
架构扩展:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#schemaExtensions/$entity",
"id": "myverifiedaaddomain_extensionid",
"description": "myverifiedaaddomain_extensionid",
"targetTypes": [
"User"
],
"status": "InDevelopment",
"owner": "owner",
"properties": [
{
"name": "isExtended",
"type": "Boolean"
}
]
}
注意:它在单租户场景中运行良好。
多租户场景:
设想 -
- 我有一个主机租户 T1
- 已注册的多租户 AAD AAP A1(在 T1 中具有所有必需的权限)
- 我想加入租户 T2
- 成功入职后在 T2 上注册架构扩展
当我登上 T2 时,来自 T1 的所有架构扩展(所有者为 A1)都将导入到 T2 的目录中,而没有任何通知或提示。
所以目前它也在多租户场景中工作,但我不确定是否将所有模式扩展导出到合作伙伴租户(T2),这是预期的行为还是错误? 这里没有明确的文档https://docs.microsoft.com/en-us/graph/extensibility-overview或https://docs.microsoft.com/en-us/graph/api/resources/schemaextension?view =graph-rest-1.0
除此之外,也没有关于权限的明确文档,例如:
https ://docs.microsoft.com/en-us/graph/extensibility-overview#permissions
他们提到,为了读取/更新扩展数据,您需要该资源权限页面上提到的所有权限。对于User
资源,我们需要拥有此处提到的所有权限https://docs.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0#permissions
这不起作用,我无法通过具有上述页面中提到的所有权限的其他 AAD 应用程序(A2、A3 等)读取扩展数据(https://docs.microsoft.com/en-us/graph/api /user-get?view=graph-rest-1.0#permissions)。
解决方案
对于您在这里遇到的一些挑战,我们深表歉意。只是为了仔细检查 - 你过去是否使用过 Azure AD 目录架构扩展?我之所以问,是因为您似乎对扩展的工作方式有一些先入之见——它们在 Microsoft Graph 中的行为略有不同。
在文档方面 - 它记录在https://docs.microsoft.com/en-us/graph/extensibility-overview#schema-extensions中有关架构扩展生命周期的部分中。也许我们可以更好地提供完整的场景。但是,当将架构定义状态设置为时,这是相关的位Available
:
架构扩展可供任何租户中的所有应用程序使用。
在所有者应用程序将扩展设置为可用后,任何应用程序都可以简单地将自定义数据添加到扩展程序中指定的那些资源类型的实例(只要应用程序有权访问该资源)。该应用可以在创建新实例或更新现有实例时分配自定义数据。
- 只有所有者应用程序可以使用附加更改来更新扩展定义。在此状态下,任何应用都不能删除扩展定义。
- 所有者应用程序可以将架构扩展从可用状态移动到不推荐使用状态。
在权限不起作用方面,多租户应用程序或其他应用程序 A2 和 A3 被授予了哪些权限?您看到了什么响应(请您也提供请求)?
希望这可以帮助,
推荐阅读
- java - Chromedriver 新更新后,单击方法在 Salesforce 网页上不起作用。如何用相同的方法处理这个问题?
- python - 是否可以从 instagram url 获取图像 url?
- c - 汇编mov指令后缀?
- azure - 无法通过 Azure 自动化帐户使用 azure 资源管理器模板部署 azure 存储
- java - 随机滚动 2 个骰子(java)
- c# - 使用带有结果验证的命令
- php - 如何从服务器获取最新图像(命名为最高编号)以显示在网站上?
- python - 有没有办法修复 django 上的数据库问题?
- android - 如何以编程方式启用 NotificationChannel 声音
- selenium - 快速微调器上的“断言”不起作用 [Selenium IDE]