java - 当组 DN 名称上有斜杠时,无法使用 ldap api 将用户添加到组

标签 java api ldap

虽然此代码对于其专有名称中没有斜杠的组和用户运行良好,但当组的 DN 名称中存在斜杠时,我似乎遇到了问题。

        String groupDNName =
            "CN=test/group,OU=TestOU,OU=Test,DC=TestDC,DC=test,DC=test";
        Set<String> usersToAddDN = new HashSet();

        usersToAddDN.add("CN=testUser,OU=TestOU,OU=TestO,DC=TestDC,DC=test,DC=test");


        //Add Users
        if (usersToAddDN != null && !usersToAddDN.isEmpty()) {

            for (String userDistinguishedName :
                 usersToAddDN) { //Add to  group


                    ModificationItem[] mods = new ModificationItem[1];
                    mods[0] =
                            new ModificationItem(DirContext.ADD_ATTRIBUTE,
                                                 new BasicAttribute("member",
                                                                    userDistinguishedName));


                    ctx.modifyAttributes(groupDNName,
                                         mods); //Add user to group
                                         }}

我收到以下错误:

javax.naming.NamingException: [LDAP: error code 1 - 000020D6: SvcErr: DSID-031007DB, problem 5012 (DIR_ERROR), data 0 ]; remaining name 'CN=test/group,OU=TestOU,OU=Test,DC=TestDC,DC=test,DC=test'

有人对此有任何线索吗?

最佳答案

我设法找到了解决这个问题的方法。看来斜杠确实有问题。

我没有在修改属性中插入组 DN 名称的字符串,而是插入了一个 Name 对象。

之后就成功了:

 Name name = new CompositeName().add(groupDNName);


                ctx.modifyAttributes(name,
                                     mods); //Add user to group 

关于java - 当组 DN 名称上有斜杠时,无法使用 ldap api 将用户添加到组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62061816/

相关文章:

LDAP - objectClass = 顶部的含义

java - Android 小部件点击时波纹背景

java - 如何点击 JList 中 JLayeredPane 中的按钮

java - 如何撤消运行配置中所做的更改

flash - 缺少 AGALMiniAssembler

python - 如何在 Python 中进行 HMAC-SHA512 签名?

ios - 如何将原始数据发送到 API

java - 自定义 LDAP 失败登录尝试计数器

java - Compat 前/后缀是否必须在 xml 和代码中的任何地方使用?

java - LDAP 与 activiti 集成