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: