Tôi đang gặp sự cố để tìm cách liên kết người dùng #Ldap với một nhóm nhất định.Liên kết người dùng Ldap với một nhóm với Java
Đó là những gì tôi đã cố gắng:
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();
}
Tôi cũng cố gắng sử dụng các tên phân biệt như: "CN = quản lý, OU = < system_name>, OU = Users, OU = < server>, DC = com ", nhưng không hoạt động. Tôi nghĩ nó nên ở đâu đó để tham khảo nhóm Ldap.
Nhưng tôi đã nhận lỗi này:
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)
...
Đây là tất cả các vết đống bên cạnh dòng ứng dụng của tôi.
Tôi chưa sử dụng JNDI để làm việc với LDAP, nhưng bạn đã kiểm tra trong Máy chủ LDAP chưa, nếu lớp đối tượng 'person' có thuộc tính 'memberOf' chưa? Máy chủ LDAP mà bạn đang phát triển chống lại là gì? Trong mọi trường hợp, bạn phải chỉ định DN đầy đủ cho 'memberOf'. – hovanessyan
Tôi đã thử ngay bây giờ chỉ vì mục đích thử nghiệm điều này và có thể tái tạo vấn đề. Thuộc tính 'memberOf' không tồn tại và DN là chính xác. Nhưng tôi nghĩ rằng vấn đề chính ở đây là việc thêm một người dùng vào một nhóm sẽ xảy ra từ đối tượng nhóm, không phải đối tượng người dùng (như @EJP đã nhận xét thêm bên dưới). –