从 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()。但它会给你每一个属性一个值,包括许多不能删除的(如sAMAccountNameobjectSid等) 是的,我想避免这个选项,因为它会为每个用户进行额外的调用+属性合并。如果我有 20 万用户,那可能是个大问题。如果没有其他选择似乎我必须坚持下去。感谢您的帮助!

以上是关于从 Microsoft Active Directory 中删除未发送的属性的主要内容,如果未能解决你的问题,请参考以下文章

从 Microsoft Active Directory 中删除未发送的属性

从 Azure Active Directory Graph 迁移到 Microsoft Graph

从注册表单将用户注册到 Microsoft Active Directory

如何从 VideoMediaFrame.Direct3DSurface 获取像素数据?

Direct Line API Microsoft Bot 框架

csgo如何用direct11运行