无法对通过图形资源管理器创建的用户资源应用目录架构扩展



免责声明:我对这一切都很陌生,所以请耐心等待。:)

我的目标是创建一个针对O365公司目录的用户资源的目录模式扩展。扩展非常简单,只有3个字符串字段。其思想是,目录中的每个用户都应该将此扩展应用于其user对象,并为其包含的3个字段指定特定值。

为此,我使用了Graph Explorer,在那里我使用我的Admin租户帐户创建了一个简单的(经过域验证的)目录架构扩展(domain_schemaname),其中包含3个字段,目标是用户资源。

我可以确认目录模式扩展是使用/v1.0/schemaExtensions创建的,状态为Available

更新目录后,我执行了一个Graph Explorer查询,以获取我自己(即/v1.0/me/extensions)以及目录中其他用户的Extensions,但是,Extensions节点的值总是返回一个空/null值([])。

我很困惑,因为我的印象是,一旦我为特定资源目标(即user资源)创建了目录模式扩展,该模式扩展就会立即出现在user资源的任何现有或新实例的属性中。然后,我将能够用目录模式扩展的值PATCH特定用户。

问题是,当我试图通过图形资源管理器向用户实例添加扩展时,它总是创建一个openTypeExtension类型的扩展,而我只想为用户分配已经在schemaExtensions中为我的组织创建的目录架构扩展的内容。

因此,我似乎无法使用Graph Explorer将目录架构扩展应用于特定的User对象。

我用错工具了吗?

你能建议我如何用特定的目录架构扩展填充O365目录中的所有用户,并为每个用户分配一个唯一的值吗?

我是否需要使用Microsoft Graph Client库和MSAL/ADAL创建控制台应用程序来创建目录架构扩展并将其应用于目录中的每个用户,然后为每个不同的用户更新其值?

谢谢你的帮助。

我可以确认目录架构扩展是使用/v.10/schemaExtensions创建的,状态为Available。

更新目录后,我执行了一个Graph Explorer查询,以获取我自己以及目录中其他用户的扩展名(即/v.0/me/Extensions),但是,Extensions节点的值总是返回空/null值([])。

创建架构扩展后,我们需要更新扩展属性的值,然后才能获得其值。

例如,我在下面注册了一个类似于模式扩展的请求:

POST: https://graph.microsoft.com/v1.0/schemaExtensions
Content-type: application/json
authorization: bearer {access_token}
{
"id": "coursesforuser",
"description": "Graph Learn training courses extensions",
"targetTypes": [
"User"
],
"properties": [
{
"name": "courseId",
"type": "Integer"
},
{
"name": "courseName",
"type": "String"
},
{
"name": "courseType",
"type": "String"
}
]
}

然后我在特定用户上更新此属性:

PATHCH:https://graph.microsoft.com/v1.0/me
Content-type: application/json
authorization: bearer {access_token}
{
"exte5t2z4fr_coursesforuser":{
"courseId":"123",
"courseName":"New Managers",
"courseType":"Online"
}   
}

之后,我们可以使用$select参数获得此属性:

GET: https://graph.microsoft.com/v1.0/me?$select=exte5t2z4fr_coursesforuser
authorization: bearer {access_token}

有关模式扩展的更多详细信息,您可以点击下面的链接:

使用架构扩展将自定义数据添加到组

最新更新