Seguridad

15
Control de acceso en Java EE

Transcript of Seguridad

Page 1: Seguridad

Control de acceso en Java EE

Page 2: Seguridad

Seguridad en Java

• Java incluye mecanismos de seguridad

con distintas finalidades:

– Controlar los recursos a los que pueden

acceder programas Java (applets, etc.)

– Asegurar la seguridad en las comunicaciones

Page 3: Seguridad

Seguridad en Java EE

• Java EE también incluye mecanismos de

seguridad para controlar el acceso de los

usuarios a las aplicaciones web. Estos

mecanismos incluyen a algunos de los

anteriores

Page 4: Seguridad

Control de acceso en Java EE

• Cualquier componente web (servlet o

página JSP) o EJB puede limitar los

usuarios que pueden acceder a la misma

• Java EE incluye clases y mecanismos

(anotaciones, etc.) para simplificar la

implementación del control de acceso de

usuarios

Page 5: Seguridad

Control de acceso en Java EE,

II• El control de acceso se puede realizar por

diversos procedimientos: usuario y clave,

certificado digital, directorio de nombres, etc.

• Cuando una componente web especifica

limitaciones de acceso mediante usuario y clave

y un usuario intenta acceder a ella, la aplicación

web correspondiente muestra en primer lugar un

formulario o ventana de diálogo que le solicita los

datos requeridos. Si los datos son correctos, le

permite el acceso; en caso contrario, le muestra

una ventana o formulario de error.

Page 6: Seguridad

• Los servidores Java EE incluyen

mecanismos para la definición de

dominios de autentificación de distintos

tipos (mediante certificado, comprobación

de nombre de usuario y clave en un

fichero o en una base de datos, etc.)

Page 7: Seguridad

• Para especificar el control de acceso en

una aplicación Java EE es preciso hacer

dos cosas:

– Incluir en un dominio de seguridad del

servidor la información referente a los grupos

de usuarios (identificador, contraseña, roles,

etc.)

– Incluir en las componentes web y EJBs

apropiadas anotaciones que determinen sus

limitaciones de acceso, o bien incluir la

información correspondiente en el fichero

web.xml

Page 8: Seguridad

• Una aplicación sencilla con limitación de acceso tiene las siguientes características:

– Los servlets con limitaciones de acceso se anotan mediante

@ServletSecurity(

@HttpConstraint(

rolesAllowed={…},

transportGuarantee=“…”))

(transportGuarantee puede ser CONFIDENTIAL o NONE)

Page 9: Seguridad

• … tiene las siguientes características:

– El fichero web.xml indica los roles existentes:

<security-role>

<role-name>coordinador</role-name>

</security-role>

<security-role>

<role-name>tecnico</role-name>

</security-role>

Page 10: Seguridad

• … tiene las siguientes características:

– El servidor tiene activado el dominio de seguridad

(realm) file y registrados los usuarios, con su

grupo y contraseña correspondientes

– El servidor tiene configurada la seguridad con

asignación por defecto de principal a rol (default

principal to role mapping)

Lo anterior evita tener que definir a qué rol de la

aplicación corresponde cada grupo de usuarios

del servidor

Page 11: Seguridad

• Extensiones y variaciones:

– Se puede utilizar un formulario en lugar de la

ventana de diálogo por defecto para la

autentificación

– …

Page 12: Seguridad

<login-config>

<auth-method>FORM</auth-method>

<realm-name>file</realm-name>

<form-login-config>

<form-login-page>/login.xhtml</form-login-page>

<form-error-page>/error.xhtml</form-error-page>

</form-login-config>

</login-config>

Page 13: Seguridad

• Extensiones y variaciones:

– …

– Se pueden especificar los roles y el tipo de

transporte en el fichero web.xml en lugar de

utilizar anotaciones

Page 14: Seguridad

<security-constraint>

<web-resource-collection>

<web-resource-name>retail</web-resource-

name>

<url-pattern>/acme/retail/*</url-pattern>

<http-method>GET</http-method>

<http-method>POST</http-method>

</web-resource-collection>

Page 15: Seguridad

<auth-constraint>

<role-name>CLIENT</role-name>

</auth-constraint>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>