Sistema de Nombrado en Java (JNDI) [Parte I]

El JNDI no define un modelo de seguridad. En vez de eso, usa los modelos de seguridad situados en la plataforma Java y en el proveedor de servicios subyacentes. Sin embargo, en t�rminos de soporte de seguridad, el JNDI proporciona propiedades de entorno relacionadas con la seguridad que permiten al cliente JNDI especificar necesidades de informaci�n comunmente relacionadas con la seguridad. Estas propiedades se listan en la lecci�n Propiedades de Entorno. Abajo tenemos un breve sumario de ellas.

  • Context.SECURITY_AUTHENTICATION ("java.naming.security.authentication").

    Especifica el mecanismo de autentificaci�n a utilizar.

  • Context.SECURITY_PRINCIPAL ("java.naming.security.principal").

    Especifica el nombre del usuario/programa que est� haciendo la autentificaci�n.

    Depende del valor de la propiedad Context.SECURITY_AUTHENTICATION.

  • Context.SECURITY_CREDENTIALS ("java.naming.security.credentials").

    Especifica las credenciales del usuario/programa que est� haciendo la autentificaci�n. Depende del valor de la propiedad Context.SECURITY_AUTHENTICATION.

  • Context.SECURITY_PROTOCOL ("java.naming.security.protocol").

    Especifica el protocolo de seguridad a utilizar.

Los proveedores de servicios est�n obligados a usar estar propiedades cuando se aplican para acceder a servicios de nombres/directorios subyacentes. Sin embargo, los poveedores podr�an usar otros significados para autentificar sus clientes, como el Java Authentication and Authorization Service.

.�Propiedades de Entorno

Necesitamos tener en mente que las propiedades de entorno posiblemente contienen infomaci�n sensible a la seguridad (como passwords). Tambi�n necesitamos entender que cuando suministramos propiedades de entorno a un proveedor de servicio (usando el constructor de InitialContext), estos son pasados por el proveedor a las factor�as (ver las lecciones Factor�as de Objetos, Factor�as de Estados, Factori�s de respuestas de control para m�s detalles). Debemos asegurarnos de que todas las factor�as y proveedores que usemos pueden ser aut�nticos para pasarles posible informaci�n sensible de seguridad.

Los ficheros de recursos de aplicaci�n, como se describi� en Propiedades de Entorno, nos permiten especificar f�cilmente propiedades de entorno. El JNDI leer� y usar� todos los ficheros de recursos de aplicaci�n que haya en el classpath. Como las propiedades de entorno pueden afectar a las factor�as que utilizamos (ver la siguiente secci�n), deber�amos ser cuidadosos sobre las definiciones de clases y ficheros de recursos de aplicaci�n que incluimos en nuestro classpath.

.�Factor�as

La arquitectura JNDI est� dise�ada para ser flexible. Podemos elegir din�micamene proveedores de servicios, as� como personalizarlos usando factor�as de objetos, factor�as de estado y fact�rias de respuestas de control. As�, dependiendo de la configuraci�n de los proveedores y las factor�as el comportamiento del programa puede variar dr�sticamente.

Esta flexibilidad, aunque poderosa, tiene implicaciones de seguridad. Deber�amos asegurarnos de que las factor�as usadas son conocidas. Las factor�as maliciosas pueden devolver datos err�neos o intencionadamente mal manejados o corromper nuestro servicio de nombres/directorio. Como los servicios de nombres/directorios normalmente se usan para almacenar informaci�n relacionada con la seguridad, deber�amos tomar precauciones extras para incluir s�lo factor�as v�lidaa y conocidas.

.�Ejemplares de Contexto

Un ejemplar de Context o uno de sus subinterfaces es una conexi�n posiblemente autentificada al servicio de nombres/directorio subyacente. Pueden ser devueltas por varios m�todos del API JNDI y SPI, incluyendo los siguientes.

Context.lookup() Context.lookupLink()
Context.listBindings() Context.createSubcontext()
DirContext.createSubcontext() varias formas de DirContext.search()
DirContext.getSchema() DirContext.getSchemaClassDefinition()
Attribute.getAttributeDefinition() Attribute.getAttributeSyntaxDefinition()
LdapContext.newInstance NamingManager.getContinuationContext()
DirectoryManager.getContinuationDirContext() NamingManager.getObjectInstance()
DirectoryManager.getObjectInstance() NamingManager.getURLContext()
NamingManager.getInitialContext() NamingEvent.getEventContext y getSource() (heredado de java.util.EventObject).
NamingExceptionEvent.getEventContext y getSource() (heredado de java.util.EventObject). UnsolicitedNotificationEvent.getSource() (heredado de java.util.EventObject).

Los ejemplares de Context tambi�n son pasados a las factor�as de objetos, de estados y de controles.

Como con las propieades de entorno, no deber�amos pasar ejemplares de Context a proveedores de servicios o factor�as no conocidos, o a cualquier otro c�digo no firmado.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO