Help me for  javax.naming.directory.InvalidAttributeValueException

i change the password by jndi , and administrator of the Active directory
had changed password of every user ,but the user is not administrator login int,cannot change himself password.why not?please help me!
Hashtable env = new Hashtable();
String userName = "CN=test,OU=test,DC=huadi,DC=com";
String oldPassword = "test";
String newPassword = "456P@ssw0rd";
//Access the keystore, this is where the Root CA public key cert was installed
//Could also do this via command line java -Djavax.net.ssl.trustStore....
String keystore = "D:/Program Files/Java/jdk1.5.0/jre/lib/security/cacerts";
System.setProperty("javax.net.ssl.trustStore",keystore);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
//set security credentials, note using simple cleartext authentication
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,userName);
env.put(Context.SECURITY_CREDENTIALS,oldPassword);
//specify use of ssl
env.put(Context.SECURITY_PROTOCOL,"ssl");
//connect to my domain controller
String ldapURL = "ldaps://173.16.80.208:636";
env.put(Context.PROVIDER_URL,ldapURL);
try {
// Create the initial directory context
LdapContext ctx = new InitialLdapContext(env,null);
//change password is a single ldap modify operation
//that deletes the old password and adds the new password
System.out.println("----auth------");
ModificationItem[] mods = new ModificationItem[2];
//Firstly delete the "unicdodePwd" attribute, using the old password
//Then add the new password,Passwords must be both Unicode and a quoted string
String oldQuotedPassword = "\"" + oldPassword + "\"";
byte[] oldUnicodePassword = oldQuotedPassword.getBytes("UTF-16LE");
String newQuotedPassword = "\"" + newPassword + "\"";
byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");
mods[0] = new ModificationItem(DirContext.REMOVE_ATTRIBUTE,
new BasicAttribute("unicodePwd", oldUnicodePassword));
mods[1] = new ModificationItem(DirContext.ADD_ATTRIBUTE,
new BasicAttribute("unicodePwd", newUnicodePassword));
// Perform the update
ctx.modifyAttributes(userName, mods);
System.out.println("Changed Password for: " + userName);
ctx.close();
}catch (NamingException e) {
System.err.println("Problem changing password: " + e);
}catch (UnsupportedEncodingException e) {
System.err.println("Problem encoding password: " + e);
}

the exception is :
javax.naming.directory.InvalidAttributeValueException: [LDAP: error code 19 - 0000052D: AtrErr: DSID-03190F00, #1:
     0: 0000052D: DSID-03190F00, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 9005a (unicodePwd)
                      thanks!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

Similar Messages

  • Javax.naming.directory.InvalidAttributeValueException: [LDAP: error code 21

    I have collected the following code from "http://www.concentric.net/~adhawan/tutorial/"
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.naming.NameAlreadyBoundException;
    import javax.naming.directory.*;
    import java.util.*;
    public class MakeRoot {
            final static String ldapServerName = "localhost";
            final static String rootdn = "cn=Manager, o=jndiTest";
            final static String rootpass = "secret";
            final static String rootContext = "o=jndiTest";
            public static void main( String[] args ) {
                    // set up environment to access the server
                    Properties env = new Properties();
                    env.put( Context.INITIAL_CONTEXT_FACTORY,
                             "com.sun.jndi.ldap.LdapCtxFactory" );
                    env.put( Context.PROVIDER_URL, "ldap://" + ldapServerName + "/" );
                    env.put( Context.SECURITY_PRINCIPAL, rootdn );
                    env.put( Context.SECURITY_CREDENTIALS, rootpass );
                    try {
                            // obtain initial directory context using the environment
                            DirContext ctx = new InitialDirContext( env );
                            // now, create the root context, which is just a subcontext
                            // of this initial directory context.
                            ctx.createSubcontext( rootContext );
                    } catch ( NameAlreadyBoundException nabe ) {
                            System.err.println( rootContext + " has already been bound!" );
                    } catch ( Exception e ) {
                            System.err.println( e );
    }I am using the ldap server at here:
    http://download.bergmans.us/openldap/openldap-2.2.29/openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe
    My slap.conf is:database     bdb
    suffix          "dc=jndiTest"
    rootdn          "cn=Manager,dc=jndiTest"
    # Cleartext passwords, especially for the rootdn, should
    # be avoid.  See slappasswd(8) and slapd.conf(5) for details.
    # Use of strong authentication encouraged.
    rootpw          secret
    # The database directory MUST exist prior to running slapd AND
    # should only be accessible by the slapd and slap tools.
    # Mode 700 recommended.
    directory     ./data
    # Indices to maintain
    index     objectClass     eqWhile running this code:
    ldap://localhost:389/
    javax.naming.directory.InvalidAttributeValueException: [LDAP: error code 21 - ob
    jectClass: value #0 invalid per syntax]; remaining name 'dc=jndiTest'
            at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)
            at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
            at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
            at com.sun.jndi.ldap.LdapCtx.c_createSubcontext(Unknown Source)
            at com.sun.jndi.ldap.LdapCtx.c_createSubcontext(Unknown Source)
            at com.sun.jndi.toolkit.ctx.ComponentContext.p_createSubcontext(Unknown
    Source)
            at com.sun.jndi.toolkit.ctx.PartialCompositeContext.createSubcontext(Unk
    nown Source)
            at com.sun.jndi.toolkit.ctx.PartialCompositeContext.createSubcontext(Unk
    nown Source)
            at javax.naming.InitialContext.createSubcontext(Unknown Source)
            at MakeRoot.main(MakeRoot.java:35)It's obviously connecting with the given credentials and provider url. But then why is it not working?
    Any help would highly appreciated. Thanks in advance.

    That is right I agree. And I guess that happened because I was trying to doing different permutation-combination with the naming scheme and I forgot to update slapd.conf. And even after made that change it was showing the same error. The poster forgot to mention to include java.schema. That change made it work finally.
    Thanks for your reply.

  • Help needed for javax.naming.Context and javax.naming.InitialContext

    I need help on this two..
    I am currently doing a project which required Connection Pooling. And this is the first time i'm exposed to all this.. I know nothing about these files.. But, i manage to get help from someone on DataSource. But i can't find any for naming.context and naming.InitialContext.. Can anyone help me? I need to know where i can get these 2 files or how to configure it.. Thanks! ;p

    This'll help you:
    http://java.sun.com/products/jndi/tutorial/

  • How to convert javax.naming.directory.Attributes to .String

    hi,
    i am getting values from ldap server.
    but here i want to assin this values to string?
    how?
    Attributes det1 = ctx.getAttributes("cn="+t1+"", attrIDs3);
    String str111=det1;
    here i am getting error like this
    Incompatible type for declaration. Can't convert javax.naming.directory.Attributes to java.lang.String
    can any one help how to overcome and this values how to equal to string?
    jpullareddy

    now i got answer,i solved
    my self for solution
    jpullareddy

  • Design console and javax.naming.directory.basicattributes class

    Hi all,
    Is it possible to do the following in the design console?
    BasicAttributes basicattributes = new BasicAttributes(true);
    basicattributes.put(new BasicAttribute(contextName, "Weblink"));
    basicattributes.put(new BasicAttribute(contextCode, "Web001"));
    your help would be much appreciated..

    While Kodo cannot persist those elements out of the box, you can easily
    use the externalization framework to persist the data in a format your
    database and Kodo can understand.
    http://solarmetric.com/Software/Documentation/3.1.3/docs/ref_guide_meta_ext.html#externalizer
    ouhmmou wrote:
    Hello,
    I'd like to know if KODO implementation (or JDO spec) could manage java
    objects such as javax.naming.directory.BasicAttribute and
    javax.naming.directory.BasicAttributes !
    because I am using those classes in my application but without succes.
    thanks you for your help
    smail
    Steve Kim
    [email protected]
    SolarMetric Inc.
    http://www.solarmetric.com

  • Javax.naming.directory.SchemaViolationException on LDAP

    I'm trying to update an attribute which contains different values, ex: objectclass, and it contains like top, person, inetOrgPerson, etc.. When I tried to updated, I got the following error
    javax.naming.directory.SchemaViolationException: [LDAP: error code 65 - Object Class Violation]; remaining name 'uid=skk27test1,ou=people,dc=georgetown,dc=edu'
         at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3036)
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2951)
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2758)
         at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1374)
         at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDirContext.java:235)
         at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:147)
         at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:136)
         at javax.naming.directory.InitialDirContext.modifyAttributes(InitialDirContext.java:138)
         at edu.georgetown.netid.test.SimpleAuthentication.main(SimpleAuthentication.java:61)and the code I'm using is
    DirContext authContext = new InitialDirContext(authEnv);
    results = authContext.search("dc=georgetown,dc=edu", "(uid=skk27test1)", controls);
    while(results.hasMore()){
         SearchResult result = (SearchResult)results.next();
         name = result.getName();
    String dn = "uid=skk27test1,ou=people,dc=georgetown,dc=edu";
                       //updating multiple attribute values for an attribute
    Attributes container = new BasicAttributes(true);
    Attribute objClasses = new BasicAttribute("objectclass");
    objClasses.add("top");
    objClasses.add("person");
    objClasses.add("organizationalPerson");
    objClasses.add("inetOrgPerson");                   
    container.put(objClasses);
    authContext.modifyAttributes(dn,DirContext.REPLACE_ATTRIBUTE, container);I can update a single attribute successfully, the following is the code
    //updating single attribute value for an attribute
    ModificationItem[] mods = new ModificationItem[1];
                     mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE,
                               new BasicAttribute("gubuildingname", "Harris1"));
    authContext.modifyAttributes(name+",dc=georgetown,dc=edu", mods);I don't know why I'm failing to get update the objectclass attribute.

    I got the solution..
    Actually I missed one attribute which should be a mandatory. I compared the attributes in the LDAP request that fails to the schema.
    I came to know there is most likely a must attribute missing, maybe from an inherited object class.
    Attributes container = new BasicAttributes(true); 
    Attribute objClasses = new BasicAttribute("objectclass"); 
    objClasses.add("top"); 
    objClasses.add("person"); 
    objClasses.add("organizationalPerson"); 
    objClasses.add("inetOrgPerson");                 
    objClasses.add("guPerson");                 
    container.put(objClasses); 
    authContext.modifyAttributes(dn,DirContext.REPLACE_ATTRIBUTE, container);  In the above code, earlier I missed to add " objClasses.add("guPerson");", the guPerson attribute value is mandatory.
    Now I can modify the results. :)

  • Can you guys help me with javax.naming.NameNotFoundException:

    Using Oracle App Server 10.1.2, OC4J managed by OPMN
    Which OC4J I am using
    oracle@SUSE-E:~/OracleAS/j2ee/home> java -jar oc4j.jar -version
    Oracle Application Server Containers for J2EE 10g (10.1.2.0.0) (build 041222.1873)
    oracle@SUSE-E:~/OracleAS/j2ee/home>
    /OracleAS/j2ee/home/config/server.xml
    <application name="xPression" path="../applications/xPression.ear" auto-start="true" />
    OracleAS/opmn/conf/opmn.xml
    <opmn xmlns="http://www.oracle.com/ias-instance">
    <notification-server>
    <port local="6100" remote="6200" request="6003"/>
    <log-file path="$ORACLE_HOME/opmn/logs/ons.log" level="4" rotation-size="1500000"/>
    <ssl enabled="true" wallet-file="$ORACLE_HOME/opmn/conf/ssl.wlt/default"/>
    </notification-server>
    <ias-component id="OC4J">
    <process-type id="home" module-id="OC4J" status="enabled">
    </ias-component>
    </opmn>
    Parameters that I used to construct the InitialContext in my Java Code.
    InitialContextFactory=com.evermind.server.rmi.RMIInitialContextFactory
    ProviderURL=opmn:ormi://10.10.5.41:6003:home/xPression
    SECURITY_PRINCIPAL=<user>
    SECURITY_CREDENTIALS=<password>
    Refered:
    http://radio.weblogs.com/0135826/2005/10/06.html
    Logfile extract: OracleAS/opmn/logs/OC4J~home~default_island~1
    53 06/10/19 11:38:04 EL providerUrl: opmn:ormi://10.10.5.41:6003:home/xPression
    54 06/10/19 11:38:04 EL namingFactory: com.evermind.server.rmi.RMIInitialContextFactory
    56 06/10/19 11:38:04 EL Creating the Initial Context
    57 06/10/19 11:38:04 EL jndi Name: com/dsc/uniarch/cr/ejb/CRContentSF
    58 06/10/19 11:38:04 EL Inside Class.forName
    59 06/10/19 11:38:04 EL Class.forName succeeded
    60 06/10/19 11:38:04 PROVIDER_URL =opmn:ormi://10.10.5.41:6003:home/xPression
    61 06/10/19 11:38:04 INITIAL_CONTEXT_FACTORY =com.evermind.server.rmi.RMIInitialContextFactory
    62 06/10/19 11:38:04 SECURITY_PRINCIPAL =user
    63 06/10/19 11:38:04 SECURITY_CREDENTIALS =password
    64 06/10/19 11:38:04 JNDI NAME =com/dsc/uniarch/cr/ejb/CRContentSF
    65 06/10/19 11:38:04 EL Exception Occurred while lookup
    66 06/10/19 11:38:04 EL Exception occurred at PortableRemoteObject.narrow
    67 06/10/19 11:38:04 javax.naming.NameNotFoundException: com/dsc/uniarch/cr/ejb/CRContentSF not found
    68 06/10/19 11:38:04 at com.evermind.server.rmi.RMIContext.lookup(RMIContext.java:164)
    69 06/10/19 11:38:04 at javax.naming.InitialContext.lookup(InitialContext.java:347)
    70 06/10/19 11:38:04 at com.dsc.uniarch.com2ejb.COM2EJBBridge._processInitializeCommand(COM2EJBBridge.java:521)
    71 06/10/19 11:38:04 at com.dsc.uniarch.com2ejb.COM2EJBBridge.processInitializeCommand(COM2EJBBridge.java:656)
    72 06/10/19 11:38:04 at com.dsc.uniarch.op.cmpcalwrapper.csetCompose(Native Method)
    73 06/10/19 11:38:04 at com.dsc.uniarch.op.cmpcalwrapper.csetOutput2PDL(cmpcalwrapper.java:96)
    74 06/10/19 11:38:04 at com.dsc.uniarch.op.OutputProfileController.processDocument(OutputProfileController.java:
    orion-ejb-jar.xml
    <session-deployment name="CRContentSF"
    location="com/dsc/uniarch/cr/ejb/CRContentSF">
    </session-deployment>
    ejb-jar.xml
    <session id="CRContentSF">
    <ejb-name>CRContentSF</ejb-name>
    <home>com.dsc.uniarch.cr.ejb.CRContentSFHome</home>
    <remote>com.dsc.uniarch.cr.ejb.CRContentSF</remote>
    <ejb-class>com.dsc.uniarch.cr.ejb.CRContentSFBean</ejb-class>
    <session-type>Stateful</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    THANKS FOR YOUR TIME AND HELP

    Some more info on from where I am looking up.
    It is a java class in the EAR and OC4J container same as the EJB (Home) class.
    Just highlighting the exception.
    Logfile extract: OracleAS/opmn/logs/OC4J~home~default_island~1
    53 06/10/19 11:38:04 EL providerUrl: opmn:ormi://10.10.5.41:6003:home/xPression
    54 06/10/19 11:38:04 EL namingFactory: com.evermind.server.rmi.RMIInitialContextFactory
    56 06/10/19 11:38:04 EL Creating the Initial Context
    57 06/10/19 11:38:04 EL jndi Name: com/dsc/uniarch/cr/ejb/CRContentSF
    58 06/10/19 11:38:04 EL Inside Class.forName
    59 06/10/19 11:38:04 EL Class.forName succeeded
    60 06/10/19 11:38:04 PROVIDER_URL =opmn:ormi://10.10.5.41:6003:home/xPression
    61 06/10/19 11:38:04 INITIAL_CONTEXT_FACTORY =com.evermind.server.rmi.RMIInitialContextFactory
    62 06/10/19 11:38:04 SECURITY_PRINCIPAL =user
    63 06/10/19 11:38:04 SECURITY_CREDENTIALS =password
    64 06/10/19 11:38:04 JNDI NAME =com/dsc/uniarch/cr/ejb/CRContentSF
    65 06/10/19 11:38:04 EL Exception Occurred while lookup
    66 06/10/19 11:38:04 EL Exception occurred at PortableRemoteObject.narrow
    67 06/10/19 11:38:04 javax.naming.NameNotFoundException: com/dsc/uniarch/cr/ejb/CRContentSF not found
    68 06/10/19 11:38:04 at com.evermind.server.rmi.RMIContext.lookup(RMIContext.java:164)
    69 06/10/19 11:38:04 at javax.naming.InitialContext.lookup(InitialContext.java:347)
    70 06/10/19 11:38:04 at com.dsc.uniarch.com2ejb.COM2EJBBridge._processInitializeCommand(COM2EJBBridge.java:521)
    71 06/10/19 11:38:04 at com.dsc.uniarch.com2ejb.COM2EJBBridge.processInitializeCommand(COM2EJBBridge.java:656)
    72 06/10/19 11:38:04 at com.dsc.uniarch.op.cmpcalwrapper.csetCompose(Native Method)
    73 06/10/19 11:38:04 at com.dsc.uniarch.op.cmpcalwrapper.csetOutput2PDL(cmpcalwrapper.java:96)
    74 06/10/19 11:38:04 at com.dsc.uniarch.op.OutputProfileController.processDocument(OutputProfileController.java:

  • Javax.naming.NameAlreadyBoundException [LDAP: error code 68

    I am getting the below Error when I am trying to add the entry into the LPAD Server.
    javax.naming.NameAlreadyBoundException: [LDAP: error code 68 - Entry Already Exists]; remaining name 'ou=People,dc=company,dc=co,dc=in'
         at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
         at com.sun.jndi.ldap.LdapCtx.c_bind(Unknown Source)
         at com.sun.jndi.ldap.LdapCtx.c_bind(Unknown Source)
         at com.sun.jndi.toolkit.ctx.ComponentContext.p_bind(Unknown Source)
         at com.sun.jndi.toolkit.ctx.PartialCompositeContext.bind(Unknown Source)
         at com.sun.jndi.toolkit.ctx.PartialCompositeContext.bind(Unknown Source)
         at javax.naming.InitialContext.bind(Unknown Source)
         at com.test.CreateUser.main(CreateUser.java:54)
    I am using the following sample program to test this.
    public class CreateUser {     
    public static void main(String[] args) {
         java.util.Hashtable env = new java.util.Hashtable();
         env.put( javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );
         env.put( javax.naming.Context.PROVIDER_URL, "ldap://c-4966:62260");
         env.put( javax.naming.Context.SECURITY_AUTHENTICATION, "simple");
         env.put( javax.naming.Context.SECURITY_PRINCIPAL, "cn=Directory Manager");
         env.put( javax.naming.Context.SECURITY_CREDENTIALS, "test");
         String dn = "ou=People,dc=company,dc=co,dc=in";     
         try {
         // create DirContext
         DirContext ctx = new InitialDirContext(env);
         // Attributes for new entry
         Attributes attrs = new BasicAttributes();
         Attribute attr = new BasicAttribute("objectclass");
         attr.add( 0, "top" );
         attr.add( 1, "person" );
         attr.add( 2, "organizationalPerson" );
         attr.add( 3, "inetorgperson" );
         attrs.put(attr);
         System.out.println("1...........");           
         attrs.put("cn", "Sai Krishna");
         attrs.put("sn", "Potluri");
         attrs.put("givenName","Sia Potluri");
         attrs.put("uid","saipotluri");
         attrs.put("userPassword", "balaji");
         /*attr = new javax.naming.directory.BasicAttribute("mail");
         attr.add( 0, "[email protected]" );
         attr.add( 1, "[email protected]" );
         attrs.put( attr );
         attrs.put( "telephonenumber", "111-1111-3333" );*/
         System.out.println("2...........");
         ctx.bind(dn, attrs);
         } catch ( javax.naming.NamingException ex ) {
         System.err.println("Fail to Add Entry\n");
         ex.printStackTrace();
    Any help is highly appreciated.
    Thanks in Advance
    DARMA

    You're adding the entry "ou=people,dc=company,dc=co,dc=in" and not an entry under "ou=people,dc=company,dc=co,dc=in".
    The dn of the new entry should be something like "cn=Sai Krishna,ou=people,dc=company,dc=co,dc=in" when you call ctx.bind(dn,...)

  • Javax.naming.OperationNotSupportedException:[LDAP: error code 12-00000057

    Hi All,
    I getting the below OperationNotSupportedException while searching the LDAP container
    "'ou=Subscriptions,ou=BMCMarimba,DC=marimba,DC=bmc-dns,DC=com'".
    In our application during the initial search i'm able to search the above container and get the results.But during subsequent search getting the below mentioned error.
    javax.naming.OperationNotSupportedException: [LDAP: error code 12 - 00000057: LdapErr: DSID-0C09068F, comment: Error processing control, data 0, vece]; remaining name 'ou=Subscriptions,ou=BMCMarimba,DC=marimba,DC=bmc-dns,DC=com'
         at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3048)\
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2934)\
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2740)\
         at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1811)\
         at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1734)\
         at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:368)\
         at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:328)\
         at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:245)\
         at com.marimba.tools.ldap.physical.LDAPConnectionImpl.getResult(LDAPConnectionImpl.java:901)\
         at com.marimba.tools.ldap.physical.LDAPConnectionPoolImpl.searchWithConnection(LDAPConnectionPoolImpl.java:1369)\
         at com.marimba.tools.ldap.physical.LDAPPagedSearchPR.getPage(LDAPPagedSearchPR.java:402)\
         at com.marimba.tools.ldap.physical.LDAPPagedSearchPR.getPage(LDAPPagedSearchPR.java:238)\
         at com.marimba.tools.ldapsync.util.PageResultEnumeration.getNextPage(PageResultEnumeration.java:159)\
         at com.marimba.tools.ldapsync.policy.core.PolicySync.processNewPolicies(PolicySync.java:351)\
         at com.marimba.tools.ldapsync.policy.core.PolicySync.syncPolicies(PolicySync.java:164)\
         at com.marimba.tools.ldapsync.core.TargetSync.syncTargets(TargetSync.java:163)\
         at com.marimba.tools.ldapsync.core.LDAPDBSync.run(LDAPDBSync.java:617)\
         at java.lang.Thread.run(Thread.java:534)
    Any idea why this exception is coming only in the subsequent search.
    Any help would be greatly appriciated.
    Thanks
    Vallinayagam

    Hope this question raised long back and no suitable answers provided. I want to share my solution which worked for this problem to all the developers hitting their heads to thier PC :-)
    You must use single LDAP connection to retrive all the results.
    For example:
    If your query returns around 10000 results, best way to get the results is using paging. Let us assume you set the page size to 500. Once you retrieve the first 500 results LDAP Connection will give you cookie which stores the information on last page. We need to set the cookie to future use i.e., for retrieving next page (next 500 results). If the connection to get next page is new/different (can be new instance or retrieved from pool) you will get "javax.naming.OperationNotSupportedException:[LDAP: error code 12-00000057".
    So, to avoid this you need to use the same LDAP connection (conext) till you retieve all the results.
    Regards,
    Nageswara Rao.V                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Ldap Search getting a javax.naming.AuthenticationNotSupportedException

    Hi,
    Can anyone help me why i am getting Authentication Exception, is there anything wrong in the Code.(This Code i got from sun site)
    I have passed the correct admin user id and password, The PROVIDER_URL is also ok.
    If i comment the below two line it works fine. But Search doesnot go inside the if block
    env.put(Context.SECURITY_CREDENTIALS,"<admin id given>");
    env.put(Context.SECURITY_AUTHENTICATION, "<password given>");
    Can any one help me.
    Or can any help me with a sample code for userAuthentication in LDAP using JNDI for MS-ADS
    My Code is as followes
    =======================================================================
    import javax.naming.directory.*;
    import javax.naming.*;
    import java.util.*;
    import java.io.*;
    public class LDAPConn
         public java.lang.Object Conn;
         public void startSearch() throws Exception
              Hashtable env = new Hashtable(11);
              DirContext ctx = null;
              try
                   ctx = new InitialDirContext(env);
                   env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
                   env.put(Context.PROVIDER_URL, "ldap://ipaddress:389/dc=xyz,dc=com");
                   env.put(Context.SECURITY_CREDENTIALS,"<admin id given>");
                   env.put(Context.SECURITY_AUTHENTICATION, "<password given>");
                   ctx = new InitialDirContext(env);
                   String[] attrIDs = {"sn", "telephonenumber", "mail"};
                   Attributes matchAttrs = new BasicAttributes(true);
                   matchAttrs.put(new BasicAttribute("sn", "Anil"));
                   matchAttrs.put(new BasicAttribute("mail","[email protected]"));
                   NamingEnumeration answer = ctx.search("cn=Users",matchAttrs, attrIDs);
                   if (answer.hasMore())
                        System.out.println("Search Success");
                   ctx.close();
              }catch(Exception e)
                   e.printStackTrace();
              return ctx;
         public static void main(String str[])
              try
                   (new LDAPConn()).startSearch();
              }     catch(Exception e)
                   e.printStackTrace();
    =======================================================================
    Thanks
    Gopi

    Hi kenty
    Thanks for your help.
    My Code is working now. I am able to connect to LDAP server.
    for the following code i am getting the output like this
    ===================== Code ===================
    String[] attrIDs = {"cn"};
    Attributes matchAttrs = new BasicAttributes(true);
    matchAttrs.put(new BasicAttribute("cn", "Souvik Mukherjee"));
    NamingEnumeration results = ctx.search("cn=Users",matchAttrs, attrIDs);
    while (results != null && results.hasMore())
    SearchResult si = (SearchResult)results.next();
    System.out.println("name: " + si.getName());
    Attributes attrs = si.getAttributes();
    if (attrs == null)
    System.out.println("No attributes");
    } else {
    for (NamingEnumeration ae = attrs.getAll();
    ae.hasMoreElements();) {
    Attribute attr = (Attribute)ae.next();
    String attrId = attr.getID();
    for (Enumeration vals = attr.getAll();
    vals.hasMoreElements();
    System.out.println(attrId + ": " + vals.nextElement()));
    ==================Output==================
    name: CN=Souvik Mukherjee
    cn: Souvik Mukherjee
    My Requirement is now By passing the userid and validating the password of "Souvik Mukherjee" Or listing all attributes of "Souvik Mukherjee".
    How to do this?
    Where will i see in MS-ADS attributes like 'cn' etc.. Because my SysAdmin told me he has used default settings while installing ADS.
    Regards & Thanks
    Gopi

  • LDAP Newbie:    javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-031522C9, problem 2001 (NO_OBJECT)

    Hi,
    I am getting the following error when I try to do a search on an ldap (AD LDS) database:
    javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-031522C9, problem 2001 (NO_OBJECT), data 0, best match of:
    'DC=AppPartFE,DC=com'
    ]; remaining name 'cn=Users,dc=AppPartFE,dc=com'
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
    at com.sun.jndi.ldap.LdapCtx.searchAux(Unknown Source)
    at com.sun.jndi.ldap.LdapCtx.c_search(Unknown Source)
    at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(Unknown Source)
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
    at javax.naming.directory.InitialDirContext.search(Unknown Source)
    at Test.<init>(Test.java:70)
    at Test.main(Test.java:118)
    I can bind successfully using either the userPrincipalName (UPN) or the Distinguished Name (DN), however my search is failing.
    It is almost as if I am connected to the db tree at the wrong place.  Do I need a different search scope?
    I appreciate any assistance you can provide.
    Here is my code:
    import java.util.*; 
    import static java.lang.System.err;
    import javax.naming.Context;
    import javax.naming.NamingEnumeration;
    import javax.naming.NamingException;
    import javax.naming.directory.DirContext;
    import javax.naming.directory.SearchControls;
    import javax.naming.directory.SearchResult;
    import javax.naming.ldap.InitialLdapContext;
    import javax.naming.ldap.LdapContext;
    public class Test 
    public Test() 
      Properties prop = new Properties(); 
      prop.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory"); 
      prop.put("java.naming.provider.url", "ldap://MyHost.Mydomain.labs.CompanyX.com:50004");
      String strProviderUrl = "ldap://MyHost.Mydomain.labs.CompanyX.com:50004";
      // Can successfully bind with the userPrincipalName in AD LDS
      //prop.put("java.naming.security.principal", "[email protected]");
      // Can successfully bind with Distinguished Name
      // Note: the string is case insensitive and embedded blank after a comma is not a problem
       prop.put("java.naming.security.principal", "cn=tst0001,cn=Users,dc=AppPartFE,dc=com"); 
      prop.put("java.naming.security.credentials", "password"); 
      try { 
        LdapContext ctx = new InitialLdapContext(prop, null); 
        System.out.println("Bind successful");
    //I am successful to this point....
       //now try doing a search on another user
         String strFilter = "(&(objectClass=userProxy)(sAMAccountName=tst0001))";
        SearchControls searchControls = new SearchControls();
        searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); //works with object class=* to find top partition node
        NamingEnumeration<SearchResult> results = ctx.search("cn=Users,dc=AppPartFE,dc=com", strFilter, searchControls);
        SearchResult searchResult = null;
        if(results.hasMoreElements()) {
             searchResult = (SearchResult) results.nextElement();
            //make sure there is not another item available, there should be only 1 match
            if(results.hasMoreElements()) {
                System.err.println("Matched multiple users for the accountName");
      catch (NamingException ex) { 
        ex.printStackTrace(); 
    public static void main(String[] args) 
      Test ldaptest = new Test(); 

    Because you are specifiying a base distinguished name in your ldap url, the ldap context will be rooted at that context and all subsequent objects will be relative to that base distinguished name.//connect to my domain controller
    String ldapURL = "ldaps://rhein:636/dc=bodensee,dc=de";andString userName = "CN=verena bit,OU=Lehrer,OU=ASR,DC=bodensee,DC=de";results in an fully distinguished name of:CN=verena bit,OU=Lehrer,OU=ASR,DC=bodensee,DC=de,dc=bodensee,dc=deEither specify your ldap url asString ldapURL = "ldaps://rhein:636";and leave your username as is, or specify the user object relative to the base distinguished name in the ldapurlString userName = "CN=verena bit,OU=Lehrer,OU=ASR";

  • Javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Cre...

    Sir/Madam,
    i am working on Windows Platform and I am getting this error when i want ot configure the LDAP.
    Please suggest
    javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
         at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3005)
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2951)
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2753)
         at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2667)
         at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:287)
         at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:175)
         at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:193)
         at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:136)
         at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:66)
         at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
         at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
         at javax.naming.InitialContext.init(InitialContext.java:223)
         at javax.naming.InitialContext.<init>(InitialContext.java:197)
         at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:82)
         at TestClient.main(TestClient.java:33)
    Thanks in advance.
    Regards
    Neelamadhab

    javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]LDAP is rejecting your credentials (username / password). Make sure your credentials are coorectly given, otherwise get help from LDAP admin.
    regards,
    Sekar

  • Handlling exception: javax.naming.PartialResultException: Unprocessed Conti

    I am running the following Java Code (in an agent in Lotus Notes, hence some of the odd bits). I've searched long and hard. I know I'm getting my error because I am searching the from the base DN in AD.
    It also appears you can't get around this with referrals settings as AD doesn't support them. I having trouble with the whole global catalog thing too.
    However, my code is working and returning the field I need. I would like to handle the error and get on with things.
    Now I am not a java programmer. Is it possible to handle the error and return to the code that generated it, or am I finished with the 'try' stuff as soon as my first exception is thrown?
    Sorry if this is a stupid question.
    import lotus.domino.*;
    import javax.naming.*;
    import javax.naming.directory.*;
    import java.util.Hashtable;
    import java.util.Vector;
    public class JavaAgent extends AgentBase {
         public void NotesMain() {
              String userName="jmbramich";
              try {
                   Session session = getSession();
                   AgentContext agentContext = session.getAgentContext();
              // Hashtable stores LDAP connection specifics.
                   Hashtable env = new Hashtable();
                   env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
                   env.put(Context.PROVIDER_URL, "ldap://hqdc01.prisons.ie:389");
    //               env.put(Context.PROVIDER_URL, "ldap://hqdc01.prisons.ie:3268");
                   env.put(Context.SECURITY_PRINCIPAL, "CN=L D. dapsearch,OU=LDAP,OU=Rescon,OU=Administrators,DC=PRISONS,DC=IE");
                   env.put(Context.SECURITY_CREDENTIALS, "gu1nne55");
                   DirContext ctx = new InitialDirContext(env);
                   // Specify the ids of the attributes to return
                   String[] attrIDs = {"postOfficeBox"};
                   SearchControls ctls = new SearchControls();
                   ctls.setReturningAttributes(attrIDs);
                   ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
                   // Specify the search filter to match
                   String filter = "(&(sAMAccountName=" + userName + ")(postOfficeBox=*))";
                   // Search the subtree for objects by using the filter
                   NamingEnumeration answer = ctx.search("DC=PRISONS,DC=IE", filter, ctls);
                   while (answer.hasMore()) {
                   SearchResult sr = (SearchResult)answer.next();
                   System.out.println(">>>" + sr.getName());
                   Attributes attrs = sr.getAttributes();
                   System.out.println(attrs.get("postOfficeBox").get());                                    
                   answer.close();
                   ctx.close();               
              } catch(Exception e) {
                   e.printStackTrace();
    Errors:
    javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'DC=PRISONS,DC=IE'
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2528)
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2502)
         at com.sun.jndi.ldap.LdapNamingEnumeration.getNextBatch(LdapNamingEnumeration.java:145)
         at com.sun.jndi.ldap.LdapNamingEnumeration.hasMore(LdapNamingEnumeration.java:181)
         at JavaAgent.NotesMain(JavaAgent.java:38)
         at lotus.domino.AgentBase.runNotes(Unknown Source)
         at lotus.domino.NotesThread.run(NotesThread.java:208)
    Error cleaning up agent threads

    Ok, managed to work this out. Needed a baby try/catch around a bit of my code so the error can be ignored - once this is done the notes agent doesn't have any problems taking out the garbage at the end.
    Final code:
    import lotus.domino.*;
    import javax.naming.*;
    import javax.naming.directory.*;
    import java.util.Hashtable;
    import java.util.Vector;
    public class JavaAgent extends AgentBase {
         public void NotesMain() {
              String userName="jmbramich";
              try {
                   Session session = getSession();
                   AgentContext agentContext = session.getAgentContext();
              // Hashtable stores LDAP connection specifics.
                   Hashtable env = new Hashtable();
                   env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
                   env.put(Context.PROVIDER_URL, "ldap://hqdc01.prisons.ie:389");
    //               env.put(Context.PROVIDER_URL, "ldap://hqdc01.prisons.ie:3268");
                   env.put(Context.SECURITY_PRINCIPAL, "CN=L D. dapsearch,OU=LDAP,OU=Rescon,OU=Administrators,DC=PRISONS,DC=IE");
                   env.put(Context.SECURITY_CREDENTIALS, "gu1nne55");
         System.out.println("Creating Context.");
                   DirContext ctx = new InitialDirContext(env);
                   // Specify the ids of the attributes to return
                   String[] attrIDs = {"postOfficeBox"};
                   SearchControls ctls = new SearchControls();
                   ctls.setReturningAttributes(attrIDs);
                   ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
                   // Specify the search filter to match
                   String filter = "(&(sAMAccountName=" + userName + ")(postOfficeBox=*))";
                   // Search the subtree for objects by using the filter
         System.out.println("Running Search...");
                   NamingEnumeration answer = ctx.search("DC=PRISONS,DC=IE", filter, ctls);
                   try {
                        while (answer.hasMore()) {
                        SearchResult sr = (SearchResult)answer.next();
                        System.out.println(">>>" + sr.getName());
                        Attributes attrs = sr.getAttributes();
                             System.out.println(attrs.get("postOfficeBox").get());                                    
                   catch(PartialResultException e) {
                        //e.printStackTrace();
                   answer.close();
                   ctx.close();
              catch(Exception e) {
                   e.printStackTrace();
    }

  • Javax.naming.NotContextException when trying to bind to a context

    Hi all.
    I am trying to use file system service provider.
    This is how I create the context:
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.sun.jndi.fscontext.RefFSContextFactory");
    env.put(Context.PROVIDER_URL, "file:/test");
    DirContext ctx = new InitialDirContext(env);
    When I try to invoke bind on ctx ;
    ctx.bind(name, obj, attrs)
    I get exception:
    javax.naming.NotContextException: Not an instance of DirContext
    at javax.naming.directory.InitialDirContext.getURLOrDefaultInitDirCtx(Unknown Source)
    Can anyone help me get around this problem.
    thanks.

    I don't think that
    com.sun.jndi.fscontext.RefFSContextFactory
    supports DirContext; just Context.

  • Urgent Help Need for the beginner

    When trying to bind a object to ldap i am getting the following exception.
    javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; rema
    ining name 'cn=aString'
    The source code is as follows,the same exception comes even when i try to do a search on the ldap.
    Am i missing out anything?
    package com.retail.ldap;
    import java.util.*;
    import javax.naming.*;
    import javax.naming.directory.*;
    import javax.naming.ldap.*;
    public class GateWay {
    public GateWay() {
         super();
    public static void main(java.lang.String[] args) {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://localhost:389");
    env.put(Context.SECURITY_AUTHENTICATION,"simple");
    System.out.println("1");
    try{
    DirContext ctx = new InitialDirContext(env);
    System.out.println(ctx);
    System.out.println("2");
    String s=new String();
    ctx.bind("cn=aString", s);
    System.out.println("3");
    catch(Exception e){System.out.println(e);}

    Hi,
    Try to specify the correct distinguished name to bind method. The distinguished name (the fully qualified name) of an object in Directory is concatenation of its relative name ( in your case "cn=aString" ) and the distinguished name of its container ( "cn=Users,dc=domain1,dc=softvision,dc=ro -- this is my case ). So pass as parameter to bind method a string like: "cn=AString,cn=theContainer,dc=yourDomain,dc=yourCompany,dc=com"
    Regards,
    Cosmin Petra

Maybe you are looking for

  • HT4623 Is there virus protection for the iPad?  Where would I find it?  Thankd

    Is there virus protection for the iPad available?  Where would I find it please?  Thanks CathyJ248

  • Album frustration

    I'm really confused. I need to create an album from various images. I have several versions created from the master image. (Color, black & white, etc). I create a smart album to get the overall shots that qualify. Then I need to create an album to be

  • Where to put data validation & DB access in MVC designed app ?

    Hi, I write a stand alone app, because the user interface might required lots of changes in the future, I want to apply the MVC paradigm in the user interface design to improve maintainability. Where should I put the routine to perform data validatio

  • IPod unable to sync at all

    Hey. I'm taking off to bike the entire south island of new zealand, and so i have been getting an iPod togther. I leave tomorrow. Figures this happens now. I've been able to have it sync with my laptop just fine and i've put 1,700 songs on it so far.

  • Apple iSight Web Cam

    Apple do not seem to have any stock,nothing from EBay or Pawn Shops. I need to buy an Apple iSight Web Cam for my Mac Book Pro G4. Can anyone help me find one or sell me one please? Thanks