从 Microsoft Active Directory 中删除未发送的属性
Posted
技术标签:
【中文标题】从 Microsoft Active Directory 中删除未发送的属性【英文标题】:Remove unsent attributes from Microsoft Active Directory 【发布时间】:2018-12-17 16:07:08 【问题描述】:我在 Microsoft Active Directory 中创建用户。
场景: 1. 使用 mail、samaccountname、sn、givenname 创建 AD 用户 2. 更新同一个用户,只提供mail、samaccountname、sn。我希望从此用户的 AD 中删除给定名称。然而它仍然存在。如果我发送具有空值的属性,它将被删除。 我不知道之前的请求提供了哪些可选属性,所以我无法发送它们。
我是使用 javax.naming 使用 apache camel 写入 AD 的 Java 应用程序
【问题讨论】:
【参考方案1】:你需要使用remove()
方法:
attributes.remove("mail");
【讨论】:
嗨,加布里埃尔。感谢您的回复。正如我在我的问题中提到的,我不知道用户在上一个请求中创建的属性是什么。是否可以将我在当前请求中发送的内容写入 AD 并删除其他所有内容。例如,用户可能在第一个请求中有昵称=X,而在第二个请求中没有。但是,我不知道在第一次请求时提供了昵称。而且我无法删除所有可能的属性,因为我不知道它们到底是什么。 不,没有办法告诉它删除所有属性。您需要明确告诉它您要删除哪些。 那真的很不方便。感谢您的回答。 好吧,我想你可以使用getAll()
找到所有带有值的属性,然后你可以将它们推回remove()
。但它会给你每一个属性一个值,包括许多不能删除的(如sAMAccountName
、objectSid
等)
是的,我想避免这个选项,因为它会为每个用户进行额外的调用+属性合并。如果我有 20 万用户,那可能是个大问题。如果没有其他选择似乎我必须坚持下去。感谢您的帮助!以上是关于从 Microsoft Active Directory 中删除未发送的属性的主要内容,如果未能解决你的问题,请参考以下文章
从 Microsoft Active Directory 中删除未发送的属性
从 Azure Active Directory Graph 迁移到 Microsoft Graph
从注册表单将用户注册到 Microsoft Active Directory
如何从 VideoMediaFrame.Direct3DSurface 获取像素数据?