Agregar un usuario con una contraseña de LDAP de Active Directory

esta es mi primera vez en StackOverflow, tengo la esperanza de obtener algunas respuestas aquí.
Estoy usando Windows Active Directory 2008 para almacenar el nuevo usuario desde java utilizando la primavera-api de ldap

Mi problema es que soy incapaz de añadir usuario con contraseña. Leí en alguna parte que en la EA para establecer una contraseña, que debo usar el unicodePwd atributo. Fuente:
http://geekswithblogs.net/lance/archive/2005/08/19/LdapAuthenticationASP.aspx

public void insertContact(ContactDTO contactDTO) {
    try{

     Attributes personAttributes = new BasicAttributes();
     BasicAttribute personBasicAttribute = new BasicAttribute("objectclass");
     personBasicAttribute.add("person");
     personBasicAttribute.add("user");
     personAttributes.put(personBasicAttribute);

      personAttributes.put("givenName", contactDTO.getCommonName());
      personAttributes.put("cn", contactDTO.getCommonName());
      personAttributes.put("sn", contactDTO.getLastName());
      personAttributes.put("description", contactDTO.getDescription());

      personAttributes.put("unicodePwd",
          this.createUnicodePassword(contactDTO.getPassword()) );
      personAttributes.put("userPrincipalName", contactDTO.getUserLoginName());
      personAttributes.put("sAMAccountName", contactDTO.getsAMAccountName());
      personAttributes.put("displayname", contactDTO.getDisplayname());
      // personAttributes.put( "pwdLastSet", "0" );
      // personAttributes.put( "LockOutTime", "0" );

      personAttributes.put("userAccountControl", "544");

      BasicAttribute roomAttribute = new BasicAttribute("roomNumber");
      for(String r : contactDTO.getRoomNumber())
      {
        roomAttribute.add(r);
      }

      personAttributes.put(roomAttribute);


      DistinguishedName newContactDN = new DistinguishedName();
      newContactDN.add("cn", contactDTO.getCommonName());

      ldapTemplate.bind(newContactDN, null, personAttributes);
    }

public byte[] createUnicodePassword(String password){
    return toUnicodeBytes(doubleQuoteString(password));
}

private byte[] toUnicodeBytes(String str){
    byte[] unicodeBytes = null;
    try{
        byte[] unicodeBytesWithQuotes = str.getBytes("Unicode");
        unicodeBytes = new byte[unicodeBytesWithQuotes.length - 2];
        System.arraycopy(unicodeBytesWithQuotes, 2, unicodeBytes, 0,
            unicodeBytesWithQuotes.length - 2);
    } catch(UnsupportedEncodingException e){
        //This should never happen.
        e.printStackTrace();
    }
    return unicodeBytes;
}

private String doubleQuoteString(String str){
    StringBuffer sb = new StringBuffer();
    sb.append("\"");
    sb.append(str);
    sb.append("\"");
    return sb.toString();
}

pero me da código de error 53

enter code here: org.springframework.ldap.UncategorizedLdapException: Operation failed; nested exception is javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 0000001F: SvcErr: DSID-031A11E5, problem 5003 (WILL_NOT_PERFORM), data 0

yo no sé cómo establecer una contraseña de usuario en AD. yo también he leído en algún lugar para establecer unicodePwd necesitamos SSL si este requiere de cómo puedo hacerlo. ¿hay alguna alternativa para resolver este problema por favor me ayude

  • Mientras que las pruebas de esto, me encontré con que en lugar de utilizar «Unicode» de la codificación y extracción de la lista de materiales, que usted puede usar simplemente «UTF-16LE» como la codificación, por ejemplo, (‘»‘ + contraseña + ‘»‘).getBytes(«UTF-16LE»).
InformationsquelleAutor | 2010-12-01

1 Kommentar

  1. 2

    Sí, la WILL_NOT_PERFORM error de ANUNCIO diciendo que usted necesita para utilizar una conexión SSL para establecer la contraseña.


    Para realizar una conexión SSL, usted necesita utilizar una dirección URL que parece: ldaps://your.ldap.server:636 (nota de la «ldaps»). Si usted recibe un certificado de validación de error, tendrás que usar «keytool» para importar el ANUNCIO certificado del servidor en Java keystore, por lo que su aplicación Java reconoce el certificado como válido.

    • ok David, ¿sabes cómo puedo usar SSL con Ldap por favor, puede mostrar la guía completa nunca se sabe acerca de SSL con Ldap.. ¿hay alguna alternativa para que sólo quiero establecer la contraseña de usuario para cualquier servicio de windows que pueden resolver este problema y yo no implementar SSL lógica por favor dime
    • ok gracias por tu respuesta.. bueno, yo sé lo que es la dirección URL y el puerto de SSL con el ANUNCIO, pero estoy confuso para importar los certificados de servidor de ANUNCIOS. muy triste me puede decir el procedimiento ¿cómo puedo obtener estos certificados, y cuánto los certificados de requres para este proceso..
    • Ese es un tema en sí mismo. Aquí hay algunas instrucciones sobre cómo hacerlo con una aplicación diferente («Multitud») confluence.atlassian.com/display/CROWD/… — no específicos para la Primavera-LDAP, pero los principios básicos son los mismos: obtener el certificado del servidor de ANUNCIOS, la importación en Java almacén de claves utilizando keytool
    • ok gracias David me van a seguir y dejar que usted sabe por favor manténgase en contacto si tengo alguna dificultad que le permitirá saber..
    • hola. tengo una pregunta con respecto a generar certificado de AD. sigo tu enlace y también buscar un poco en google y creo que debemos utilizar 3 ª parte para emitir estos certificados. sólo quiero la configuración de estos para mi entorno de prueba que me diga cómo puedo omitir la 3ª parte de la generación de certificados…
    • sslshopper.com/… puedo seguir este artículo para generar el archivo.. pero como hablar de que nos pide el certificado de la autoridad para crear el certificado SSL para nosotros, pero estoy totalmente en entorno de prueba por favor, dime cómo puedo generar el certificado para utilizar la conexión SSL para generar usuario con contraseña
    • Usted tiene que instalar Active Directory Certificate Services – paso a paso se puede encontrar en gregtechnobabble.blogspot.cz/2012/11/… .
    • Hola, he hecho una conexión SSL y añadido el certificado de Java Kestore, sigue recibiendo el error, como javax.naming.CommunicationException: simple bind failed: 192.168.0.5:636 [Root exception is java.net.SocketException: Connection or outbound has closed], puede usted ayudar?

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...