【问题标题】:On-Premises User Profile Update Using Microsoft Graph API使用 Microsoft Graph API 进行本地用户配置文件更新
【发布时间】:2019-04-12 07:54:13
【问题描述】:

我们的应用程序中有一个屏幕,用于通过 Graph API 更新 Azure AD 用户。如果用户是使用 Azure Portal 或 Graph API 创建的,我可以使用此屏幕更新用户配置文件。

但是如果在更新这些用户时使用 AD Connect 创建/同步用户(例如 O365 用户),Microsoft Graph 会返回以下错误:

无法更新本地主控目录同步对象或当前正在迁移的对象的指定属性

我有以下疑问:

  1. 是否可以通过从本地创建的 Graph API 将用户更新到 Azure AD?
  2. Azure 门户或 Ad Connect 上是否有任何设置允许用户 通过 Graph API 更新?
  3. 还有如何区分用户是在本地创建的还是通过 Microsoft Graph API 在 Azure AD 上创建的。 Microsoft.Graph.User 类中的任何属性?

【问题讨论】:

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


    【解决方案1】:

    回答您的问题:

    1. 不,这是不可能的,因为它们是同步的。如果微软允许双方进行更改,它就必须实施某种重复更改解决系统。所以他们只是阻止了更改属性,除了一些仅限云的属性,如许可证。
    2. 不,不是因为上述原因
    3. 是的,但它有点老套。

    要查看是否通过同步创建了 Graph 用户,您应该为您的应用程序请求 User.Read.All 范围,然后使用选择所有属性查询字符串 ?$select=*Get user endpoint 发出请求。

    同步的用户应该具有OnPremisesSamAccountName 属性以及其他不会出现在非同步用户上的属性。

    一旦您发现用户是本地用户,您的应用程序就可以使用 System.DirectoryServices.AccountManagement api 直接更新您的 AD。

    【讨论】:

    • 感谢您的回复。目前我正在使用 onPremisesDomainName 来检查用户是否在本地。你能解释一下你答案的最后一段吗?我的应用程序如何使用 System.DirectoryServices.AccountManagement api 更新本地用户,它是一个 Web 应用程序。
    • 它是否在您自己的服务器上运行?您还可以创建自己的“代理”Web 应用程序在内部运行,以便它可以访问您的广告。或者将更改保存到某些数据库/队列并创建一个同步命令行应用程序,您可以使用具有域写入权限的特殊帐户在本地运行该应用程序
    • No 没有应用程序在 azure 上注册为 PAAS,window Server AD 由另一家公司/供应商维护。目前,我的团队决定不更新本地用户,因为目前在我们的场景中这似乎是不可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    相关资源
    最近更新 更多