Programación en castellano Añadir una dirección | Buscador | Cursos | Artículos | Foros | Formación

Sistema de Nombrado en Java (JNDI) y II
Autor: Sun
Traductor: Juan Antonio Palos (Ozito)


En esta página:


Autentificación CRAM-MD5

La autentificación CRAM-MD es uno de los mecanismos SASL que fue propuesto en un principio como mecanismo requerido para servidores LDAP v3. Ha sido desplazado por DIGEST-MD5. Sin embargo, algunos servidores existentes, como el Netscape Directory Server, soportan CRAM-MD5. Como el uso de SASL es parte del LDAP v3 (RFC 2251), los servidores que sólo soportan LDAP v2, no soportan CRAM-MD5.

Cuando usamos el mecanismo CRAM-MD5, el servidor LDAP envía algunos datos al cliente LDAP. El cliente responde encriptando los datos con su password usando el algoritmo MD5. Entonces el servidor LDAP usa la password almacenada del cliente para determinar si el cliente ha usado la password correcta.

Para usar el mecanismo de autentificación CRAM-MD5, debemos configurar las propiedades de entorno de autentificación de esta forma:

Context.SECURITY_AUTHENTICATION.
Configurada con el string "CRAM-MD5".
Context.SECURITY_PRINCIPAL.
Configurada con el nombre principal. De acuerdo a la RFC 2829, el nombre debería ser el string "dn:", seguido por el DN cualificado de la entidad que está siendo autentificada, o el string "u:", seguido por la identidad del usuario. La forma requerida depende de la implementación del servidor LDAP. Algunos ejemplo son: "dn: cn=C. User, ou=NewHires, o=JNDITutorial" y "u: cuser". Un borrador anterior de esta proposición no incluía el uso del prefijo "dn:", por eso algunos servidores podrían aceptar simplemente el DN totalmente cualificado de la entidad que está siendo autentificada (por ejemplo, "cn=C. User, ou=NewHires, o=JNDITutorial"). Debemos comprobar con nuestro servidor LDAP qué nombre espera. En cualquier caso, el tipo de dato de esta propiedad debe ser java.lang.String.
Context.SECURITY_CREDENTIALS.
Configurado con las password principal. (por ejemplo, "mysecret"). Es del tipo java.lang.String, array de char (char[]), o array de byte (byte[]). Si la password es un java.lang.String o un array de char[], se convierten usando UTF-8 para transmitirla al servidor. Si la password es un array de byte[], se transmite directamente al servidor.

El siguiente ejemplo muestra cómo un cliente realiza su autentificación usando CRAM-MD5 sobre un servidor LDAP:

// Set up the environment for creating the initial context
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, 
    "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");

// Authenticate as C. User and password "mysecret"
env.put(Context.SECURITY_AUTHENTICATION, "CRAM-MD5");
env.put(Context.SECURITY_PRINCIPAL, "cn=C. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");

// Create the initial context
DirContext ctx = new InitialDirContext(env);

// ... do something useful with ctx
Nota:

Netscape Directory Server v4.1 soporta el mecanismo CRAM-MD5 sólo si instalamos algún software adicional en el servidor. De otra forma, intentar usar CRAM-MD5 con el servidor resultara en el lanzamiento de una CommunicationException. Puedes ver la documentación del servidor para ver instrucciones de cómo obtener e instalar el software.


Principio Página
© 1999-2002, Programación en castellano, s.l.
Contacto - Datos legales

ReD Internet: Hospedaje Web | envio sms gratis | Salvapantallas | Fondos de Escritorio, famosas | melodias moviles gratis| Gratis