Download JAAS: Seguridad completa en Java

Document related concepts
no text concepts found
Transcript
JAAS: Seguridad
completa en Java
Oscar Rojas
SoftClear
Abril, 2007
Agenda
●
Conceptos de seguridad
●
Qué es JAAS y con que se come?
●
Seguridad en J2EE
●
Integración de JAAS en Aplicaciones Web
Conceptos de seguridad
●
Autenticación:
–
Soy yo quién digo ser?
–
Cómo lo verifico?
Conceptos de seguridad
●
Autorización:
–
Qué puedo hacer?
–
A qué puedo acceder?
–
Privilegios
–
Limitaciones
JAAS
●
Java Authentication and
Authorization Service
–
API de Java que provee un framework para
mecanismos de autenticación y autenticación
para aplicaciones en Java
–
Es la implementación en Java del estándar
PAM(Pluggable Authentication Module)
JAAS
●
Independencia
JAAS
●
Keywords:
–
Subject: clase que representa a un ente autenticable dentro
de la aplicación es quien va a invocar los metodos de
autenticación.
–
Principal: clase que representa los atributos que poseen cada
subject recuperados una vez que se efectúa el ingreso a la
aplicación. En base a los Principals se determinan los privilegios
dentro de esta.
–
LoginContext: clase que se crea y utiliza para invocar la
autenticación
–
LoginModule: interfaz que que debe implementarse para
definir los mecanismos de autenticación en la aplicación
–
CallBackHandler: interfaz que se debe implementar para
interactuar con los mecanismos de seguridad para que esta
pueda recuperar los datos necesarios para la autenticación
JAAS
Archivo de configuración:
●
SimpleLogin {
SimpleLoginModule required;
};
–
En él se definen los módulos de autenticación a utilizar, y
la forma de utilizarlos. Estas formas son:
●
required
●
requisite
●
optional
●
sufficient
JAAS
●
LoginModule debe implementar:
–
initialize
–
login
–
commit
–
abort
–
logout
JAAS
●
Autorización:
–
Se logra mediante clases que implementan
la interfaz PriviledAction
public class SampleAction implements PrivilegedAction {
public Object run() {
.
.
.
//Conjunto de acciones restringidas
return null;
}
}
Seguridad en J2EE
●
●
Usuarios y Roles agrupados bajo políticas
de seguridad(Realms)
Restricción de acceso de manera
declarativa y programática.
Seguridad en J2EE
●
Realms comunes:
–
JDBCRealm
–
DataSourceRealm
–
JNDIRealm
–
MemoryRealm
–
JAASRealm
Seguridad en J2EE
●
Protegiendo los recursos
–
Acceso restringido a los recursos de la
aplicación de acuerdo a roles definidos.
–
Configuración de restricciones de
seguridad(web.xml)
Seguridad en J2EE
●
Configuración de Realms:
–
Se añaden las entradas dentro del contexto
la instancia del servidor J2EE(server.xml)
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost/authority?user=dbuser&
amp;password=dbpass"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name"/>
Seguridad en J2EE
●
Añadiendo restricciones de seguridad:
<security-constraint>
<display-name>Entrada restricción de Segurida</displayname>
<web-resource-collection>
<web-resource-name>Recursos protegidos</web-resource-name>
<url-pattern>/protegidos/usuarios/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
Seguridad J2EE
●
Tipos de autenticación en J2EE:
–
Especificado en el descriptor de despliegue.
Pueden ser:
●
●
●
BASIC: Autenticación básica de usuario/contraseña
DIGEST: Similar a la anterior. Con la diferencia que
la contraseña es cifrada. No se garantiza que todos
los browsers soporten esta funcionalidad.
FORM: Basada en formulario web.
Integración de JAAS en
Aplicaciones Web
●
Configuración de JAASRealm
●
Mapeo de Usuarios y Roles
●
Uso en contexto declarativo y
programático
<Realm className="org.apache.catalina.realm.JAASRealm" debug="100"
appName="JaasTestTomcat"
userClassNames="web.security.principals.UserPrincipal"
roleClassNames="web.security.principals.RolePrincipal" />
Patrocinado por: