gpt4 book ai didi

java - 使用 Java 将 Ldap 用户关联到一个组

转载 作者:搜寻专家 更新时间:2023-10-31 20:14:31 26 4
gpt4 key购买 nike

我在查找如何将 #Ldap 用户关联到给定组时遇到问题。

这是我尝试过的:

    Attributes attrs = new BasicAttributes();

BasicAttribute basicAttrs = new BasicAttribute("objectclass");
basicAttrs.add("top");
basicAttrs.add("person");

BasicAttribute memberOf = new BasicAttribute("memberOf");
memberOf.add("Managers"); // Tried with distinguished name too
memberOf.add("Administrators"); // Tried with distinguished name too

attrs.put(basicAttrs);
attrs.put("cn", user.getLogin());
attrs.put("name", user.getLogin());
attrs.put("login", user.getLogin());
attrs.put("mail", user.getMail());
attrs.put("displayName", user.getDisplayName());
attrs.put("memberOf", memberOf);

try {
ctx.bind("CN=" + user.getLogin() + "," + baseDn, null, attrs);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

我还尝试使用可分辨名称,例如:“CN=Managers,OU= ,OU=Users,OU= ,DC=com”,但没有用。我认为它应该在某处引用 Ldap 组。

但是我得到了这个错误:

javax.naming.directory.InvalidAttributeValueException: Malformed 'memberOf' attribute value; remaining name 'CN=lcarvalho,OU=<system_name>,OU=Users,OU=<server>,DC=com'
at com.sun.jndi.ldap.LdapClient.encodeAttribute(LdapClient.java:951)
at com.sun.jndi.ldap.LdapClient.add(LdapClient.java:999)
at com.sun.jndi.ldap.LdapCtx.c_bind(LdapCtx.java:396)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_bind(ComponentDirContext.java:277)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.bind(PartialCompositeDirContext.java:197)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.bind(PartialCompositeDirContext.java:186)
at javax.naming.directory.InitialDirContext.bind(InitialDirContext.java:158)
...

这是除了我的应用程序行之外的所有堆栈跟踪。

最佳答案

如果您使用的是 OpenLDAP,memberOf 属性由 memberOf 覆盖层自动维护,您的应用程序根本不应写入它。您应该做的是将用户的 DN 添加到他加入的组的 uniqueMemberroleOccupant 等属性中。然后它的 DN 会神奇地出现在他的 memberOf 属性中。

关于java - 使用 Java 将 Ldap 用户关联到一个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com