我使用此代码片段将用户添加到 ldap
**public DirContext getLDAPDirContext() throws NamingException {
final Hashtable envValues = new Hashtable();
// Assign the JNDI environment values in Map
envValues.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
envValues.put(Context.PROVIDER_URL, url);
envValues.put(Context.SECURITY_PRINCIPAL,dn); // specify the username
envValues.put(Context.SECURITY_CREDENTIALS,password); // specify the password
return new InitialDirContext(envValues);
}
public static void main(String arg[]) throws NamingException {
LdapNew ldapNew = new LdapNew();
String groupDN ="ou=user,dc=ldap,dc=***,dc=***";
BasicAttributes myAttrs = new BasicAttributes(true); //Basic Attributes
myAttrs.put("uid","chamils");
myAttrs.put("objectClass","top");
myAttrs.put("objectClass","dcObject");
myAttrs.put("objectClass","organization");
myAttrs.put("objectClass", "inetOrgPerson");
myAttrs.put("cn","FNAME LNAME");
myAttrs.put("displayname", "FNAME LNAMEE");
myAttrs.put("givenname","Chamilseeee");
myAttrs.put("sn","Thanthrimudaliged");
myAttrs.put("mail","*******");
DirContext ctx = ldapNew.getLDAPDirContext();
ctx.bind("uid=chamils,ou=user,dc=ldap,dc=****,dc=***",myAttrs);
}**
但它给
线程“主”javax.naming.directory.InvalidAttributeIdentifierException 中的异常:[LDAP:错误代码 17 - javaSerializedData:属性类型未定义];剩余名称 'uid=chamils,ou=user,dc=ldap,dc= ,dc=' 在 com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987) 在 com.sun.jndi.ldap.LdapCtx 的 com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3110)。 processReturnCode(LdapCtx.java:2794) 在 com.sun.jndi.ldap.LdapCtx.c_bind(LdapCtx.java:397) 在 com.sun.jndi.ldap.LdapCtx.c_bind(LdapCtx.java:354) 在 com.sun .jndi.toolkit.ctx.ComponentContext.p_bind(ComponentContext.java:596) 在 com.sun.jndi.toolkit.ctx.PartialCompositeContext.bind(PartialCompositeContext.java:183) 在 com.sun.jndi.toolkit.ctx.PartialCompositeContext .bind(PartialCompositeContext.java:173) 在 javax.naming.InitialContext.bind(InitialContext.java:400) 在 LdapNew.main(LdapNew.java:49) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun。反射.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl。java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 com.intellij.rt.execution.application.AppMain.main (AppMain.java:120)
这是为什么。