我们的应用程序中有一个屏幕,用于通过图形 API 更新 Azure AD 用户。如果用户是使用 Azure 门户或图形 API 创建的,则可以使用此屏幕更新用户配置文件。
但是,如果用户是使用 AD Connect 创建/同步的(例如,在 O365 用户的情况下(,同时更新这些用户Microsoft Graph 将返回以下错误:
无法更新本地主控目录同步对象或当前正在迁移的对象的指定属性
我有以下疑问:
- 是否可以通过从本地创建的图形 API 更新用户到 Azure AD?
- Azure 门户或广告连接上是否有任何允许用户通过图形 API 更新?
- 以及如何区分用户是通过图形 API 在本地还是在 Azure AD 上创建的Microsoft。Microsoft.Graph.User Class中的任何属性?
要回答您的问题:
- 不,这
- 是不可能的,因为它们的同步方式。如果Microsoft允许双方进行更改,则必须实施某种重复的更改解决系统。因此,他们只是阻止更改属性,除了一些仅限云的属性,如许可证。
- 不,没有因为上述原因
- 是的,有,但它有点笨拙。
若要查看是否通过同步创建了 Graph 用户,应请求应用程序的User.Read.All
范围,然后使用"选择所有属性"查询字符串?$select=*
向"获取用户终结点"执行请求。
的用户应具有未显示在未同步用户上的其他用户中的 OnPremisesSamAccountName
属性。
一旦发现用户是本地用户,您的应用程序就可以使用 System.DirectoryServices.AccountManagement API 直接更新您的 AD。