使用Microsoft Graph如何获取从On Premise AD

时间:2018-02-19 12:27:13

标签: azure active-directory azure-active-directory microsoft-graph azure-ad-graph-api

我有Active Directory内部部署,它使用连接器与我的Azure AD实例同步。

'其他移动'等字段和其他电话'设置为从On-Prem AD同步到Azure AD。 (所有用户都填充了这些值)

但是,当使用Microsoft Graph查询时,我无法看到这些字段,这是我正在使用的URL(我可以看到标准字段很好):

https://graph.microsoft.com/v1.0/users/[USER ID HERE]

我尝试了各种查询,但没有运气。是否甚至可以使用Graph API查看Azure AD上用户的所有字段,包括从On-Prem AD同步的字段?我还有其他选择吗?

我尝试过查询,包括' $ select = otherMobile,otherTelephone'还有扩展

我也尝试过Azure AD图浏览器,但是用户对象也不包含这些字段:

https://graph.windows.net/ $ metadata#directoryObjects / Microsoft.DirectoryServices.User

2 个答案:

答案 0 :(得分:1)

默认情况下,仅返回一组有限的属性(businessPhones,displayName,givenName,id,jobTitle,mail,mobilePhone,officeLocation,preferredLanguage,surname,userPrincipalName)。要返回备用属性集,必须指定所需的属性使用OData $ select查询参数设置用户属性。

例如,要返回displayName,givenName和postalCode,您需要将以下内容添加到查询$ select = displayName,givenName,postalCode。

您必须在select中指定所有字段,因为$ select = *将仅输出Graph API实现中的关键字段。

您无法使用图谱API访问“其他手机”和“其他电话”等字段,因为只有几个用户字段可供访问。有关用户字段的详细信息,请参阅:User Entity

答案 1 :(得分:0)

在字面上搜索有关此问题的响应数天后,返回此处,以防其他人遇到此问题:默认情况下,msgraph 不会返回这些特殊属性,它们属于不同架构的一部分。 找出哪些模式可用的方法,我使用了以下 api:

https://graph.microsoft.com/v1.0/schemaExtensions

它需要一个访问令牌,基于此,它会返回可用的模式,在我的例子中,有一个 ID 为:someId_UserExt 的东西,我认为它可以存储它们的位置有些道理.

之后,我在上面发布的@Ajay 之类的查询中使用了上面的 id 以及我需要的其他扩展:

...$select={someId_UserExt} displayName, givenName, postalCode, {extensionId_otherMobile}

这里需要注意的一点是,这些扩展名不直接称为 otherMobileotherTelephone,它们前面有某种形式的 id,例如:92432132132141321321_otherMobile 等. 那就是正确选择值所需的扩展名

用于检查这些 ID 的端点是: https://graph.microsoft.com/v1.0/applications/{appId}/extensionProperties 或至少可能从 Azure AD 中获取他们的名称或 objectId。

上面的一些很好的阅读:https://docs.microsoft.com/en-us/graph/api/application-list-extensionproperty?view=graph-rest-1.0&tabs=http