Java Authenticatin and Auterizatin Service (JAAS) CSOF-5201 1
Agenda Intrducción Seguridad JEE Seguridad Declarativa Seguridad Prgramada Java Authenticatin and Authrizatin Services (JAAS) Seguridad Nivel Web Seguridad Nivel Ejb 2
Intrducción Se requieren sistemas libres de peligr y que generen cnfianza a sus usuaris Asegurar cnfiabilidad, integridad y dispnibilidad La seguridad es requerida en aplicacines cn dats sensibles y diversidad de usuaris 3
Intrducción Funcines de la seguridad Previene acces de usuaris n autrizads a funcines de una aplicación Permite identificar ls usuaris y sus tareas (N repudi) Prtege al sistema de interrupcines que perjudiquen la calidad del servici Es transparente para el usuari 4
Intrducción Java prvee diferentes mecanisms de seguridad: Java Generic Security Services (Java GSS-API): API basad en tkens usad para intercambiar mensajes de manera segura entre aplicacines de cmunicacines Java Cryptgraphy Extensin (JCE): Prvee un framewrk para encripción, generación y acuerd de claves y algritms de autenticación de mensajes. Java Secure Sckets Extensin (JSSE): Prvee una implementación en Java de ls prtcls SSL y TLS. Permite encripción de dats, autenticación de clienteservidr e integridad de mensajes 5
Intrducción Java Authenticatin and Authrizatin Service (JAAS) Cnjunt de APIs que prveen servicis de autenticación y de cntrl de acces de usuaris Prvee un framewrk prtable y extensible para establecer autenticación y autrización de usuaris de manera prgramática Garantiza acces a varis prgramas, basad en permiss y plíticas de seguridad API de Java SE Tecnlgía base para ls mecanisms de seguridad de JEE 6
Intrducción Características de seguridad para JEE: Autenticación: Prces de verificar que el usuari es quien dice ser, se apya en el cncept de identificación. Se realiza a través de las credenciales del usuari, p.e. firmas digitales, usuari y cntraseña Autrización Cntrl de Acces: Prces que determina si un usuari tiene acces a una tarea a un recurs particular, este prces es seguid de la autenticación Identificación: Prces que establece si una entidad es recncida pr el sistema 7
Intrducción Cnfidencialidad: Define que ls dats slamente estén dispnibles para ls usuaris autrizads N Repudi: El usuari debe ser respnsable de las accines que realiza, y n puede negarl Calidad del servici (QS): Ls servicis de seguridad deben garantizar la transmisión de infrmación de manera cnfiable 8
Intrducción Realm Dmini de Seguridad: Es un repsitri de usuaris y grups para validar ls usuaris de una aplicación Web que sn cntrlads pr la misma plítica de autenticación El servici de autenticación de JEE puede gbernar usuaris en multiples dminis de seguridad En glassfish, vienen precnfigurads ls realms file, admin-realm y certificate En el realm file, el servidr almacena las credenciales de usuari lcamlente en el archiv keyfile 9
Intrducción Usuari (Principal): Es un individu cn una entidad registrad en el servidr de aplicacines. Puede estar asciad a un grup Puede tener asciads un cnjunt de rles a dicha identidad Grup: Cnjunt de usuaris autenticads cn rasgs en cmún, p.e: grup de vendedres Puede tener asciads varis rles al igual que un usuari Facilita el cntrl de acces Gran cantidad de usuaris Está relacinad al servidr de aplicacines cm tal Rl: Determina el permis de acces a un cnjunt particular de recurss de una aplicación Relacinad cn una aplicación del servidr de aplicacines p.e: administradr, emplead, estudiante Credencial: Cntiene la infrmación (atributs de seguridad) utilizada para autenticarse 10
Intrducción Tmad de [2] 11
Intrducción Secure Scket Layer (SSL) SSL es un prtcl para manejar la transmisión segura de mensajes en internet SSL se ubica entre las capas de aplicación y transprte Permite la cmunicación entre navegadres Web y servidres Web sbre una cnexión segura En esta cnexión, ls dats sn encriptads antes de ser enviads y desencriptads al mment de ser recibids Versión 3.0 desarrllada pr netscape en 1996 12
Intrducción Secure Scket Layer (SSL) Autenticación: Se verifica la autenticidad del servidr pr medi de un certificad digital. El servidr puede requerir un certificad del cliente Autenticación de cliente Cnfidencialidad: Ls mensajes enviads entre cliente y servidr sn encriptads Un tercer n puede desencriptar ls mensajes Integridad: Se asegura que ls dats n serán mdificads durante el prces de cmunicación pr un tercer 13
Intrducción Certificad Digital Frma digital de identificación Emitid pr entidades emisras de certificads (CA) Ls certificads digitales permiten la criptgrafía mediante claves públicas Cuand se emite un certificad digital, la entidad emisra firma el certificad cn su prpia clave privada 14
Intrducción HTTPS Hypertext Transfer Prtcl ver Secure Scket Layer Versión segura del prtcl HTTP Utilizad para manejar transaccines segur sbre la Web utilizand certificads digitales Las direccines en el navegadr cmienzan cn https:// El puert estándar es 443 HTTPS sól prtege ls dats en tránsit La seguridad de ls dats en el receptr y el emisr, dependen de la seguridad de cmputadr de cada un de ells 15
Intrducción - Ejempl 1. El servidr Web slicita al cliente autenticarse 2. El cliente Web envía sus dats para ser autenticad pr el servidr 2 1 Un cliente Web hace una petición a una aplicación Web 3. La validación la puede hacer directamente el servidr lcal puede ser delegad a trs servicis de seguridad. El servidr Web asigna una credencial al usuari 3 Cn la credencial se determinan ls permiss que tiene el usuari. El cntenedr cnsulta la plítica de seguridad de ls cmpnentes y define si el rl del usuari tiene ls permiss para acceder a ests Tmad de [2] 16
Intrducción- Ejempl Si el usuari es autrizad, se acepta la slicitud 4 1. La página JSP lcaliza el bean de sesión y establece una asciación de seguridad a través de la credencial del usuari 2. El cntenedr EJB se encarga de definir si un cliente tiene acces a sus métds. Est l realiza a través de las plíticas de seguridad asciadas cn él 5 3. Se tienen ds cntexts de seguridad, el primer para el servidr Web y el segund para el cntenedr EJB 17
Agenda Intrducción Seguridad JEE Seguridad Declarativa Seguridad Prgramada Java Authenticatin and Authrizatin Services (JAAS) Seguridad Nivel Web Seguridad Nivel Ejb 18
Seguridad JEE Las aplicacines JEE sn desplegadas en cntenedres, ls cuales frecen ds tips de seguridad: Declarativa (declarative authrizatin) Prgramada (prgrammatic authrizatin) 19
Seguridad Declarativa Declarativa La seguridad requerida pr ls cmpnentes es definida en descriptres de despliegue Ls descriptres sn externs a la aplicación Se definen ls rles y requerimients de acces Se mapean ls rles cn el ambiente específic, usuaris y plíticas de seguridad Un archiv descriptr es un XML 20
Seguridad Declarativa Descriptres Enterprise JavaBeans Descriptr de despliegue EJB ejb-jar.xml Debe estar ubicad en META-INF/ y debe estar ubicad en un archiv JAR de EJB Web Services jaxrpc-mapping-inf definid en JSR109. Prvee un mape entre el WSDL y Java Cmpnentes Web Descriptr de despliegue Web web.xml 21
Seguridad Prgramada Prgramada: Está embebida en el códig fuente de la aplicación Es útil cuand n es suficiente la seguridad declarativa para definir el mdel de seguridad de la aplicación El API cntiene ls siguientes métds: Interface javax.ejb.ejbcntext java.security.principal getcallerprincipal(); blean iscallerinrle(string rlename); Interface javax.servlet.http.httpservletrequest blean isuserinrle(string rlename); java.security.principal getuserprincipal(); 22
Antacines Las antacines permiten un estil declarativ de prgramación Ls desarrlladres pueden especificar infrmación de seguridad dentr de una clase utilizand antacines Infrmación adicinal debe estar ubicada en archivs descriptres Cualquier infrmación explícita especificada en un descriptr de despliegue sbrescribe cualquier valr especificad cn antacines. 23
Agenda Intrducción Seguridad JEE Seguridad Declarativa Seguridad Prgramada Java Authenticatin and Authrizatin Services (JAAS) Seguridad Nivel Web Seguridad Nivel Ejb 24
JAAS La seguridad de las aplicacines JEE está basada sbre Java Authenticatin and Authrizatin Services (JAAS) API JAAS Separa el sistema de autenticación de la aplicación JEE La aplicación sól debe cncer cm cmunicarse cn el API de JAAS JAAS cnce cm cmunicarse cn sistemas de autenticación cm: Lightweight Directry Access Prtcl (LDAP): Micrsft Active Directry r Oracle Internet Directry (OID) Es diseñad para autenticación y autrización, incluyend las capas web y EJB. La autenticación se puede realizar a nivel web y se mantiene el cntext de seguridad en tds ls niveles. (Cntext cmpartid) 25
JAAS Nivel WEB Nivel EJB Cntext de seguridad Recpila infrmación del usuari Autriza (valida si el rl tiene permiss) Autriza JAAS Autentica al usuari cn las credenciales Sistema de Autenticación Escenari de Seguridad usand JAAS [1] 26
Agenda Intrducción Seguridad JEE Seguridad Declarativa Seguridad Prgramada Java Authenticatin and Authrizatin Services (JAAS) Seguridad Nivel Web Seguridad Nivel Ejb 27
Seguridad - Nivel WEB El cntenedr WEB se encarga de la seguridad. Es necesari definir: Ls cmpnentes que se aseguran La frma de asegurarls El manej de credenciales de autenticación Ls rles que tienen acces a cada cmpnente La autenticación y la autrización a nivel Web se cnfigura a través de: web.xml lgin-cnfig security-cnstraint Es necesari definir ls usuaris, dminis y grups en el cntenedr Web un sistema de usuaris 28
Seguridad - Nivel WEB Ejempl web.xml <lgin-cnfig> <auth-methd>basic</auth-methd> <realm-name>actinbazaarrealm</realm-name> </lgin-cnfig> <security-rle> <rle-name>intranet</rle-name> </security-rle> Autenticación: Mecanism de autenticación Define ls rles de la aplicación en un descriptr de despliegue <security-cnstraint> <web-resurce-cllectin> <web-resurce-name>actinbazaar Administrative Cmpnent </web-resurce-name> <url-pattern>/admin/*</url-pattern> </web-resurce-cllectin> <auth-cnstraint> <rle-name>csr</rle-name> </auth-cnstraint> </security-cnstraint> Autrización: Define ls rles que tienen acces a la aplicación Tmad de [1] 29
Descripción web.xml 1. Mecanism de Autenticación a. BASIC: Utiliza un esquema de autenticación en la cabecera HTTP. El brwser tma la infrmación de usuari/cntraseña Tmad de [2] 30
Descripción web.xml 1. Mecanism de autenticación b. FORM: Tiene el mism esquema de BASIC, cn la diferencia de usar un frmulari HTML persnalizad Tmad de [2] 31
Descripción web.xml 1. Mecanism de autenticación b. FORM: Tiene el mism esquema de BASIC, cn la diferencia de usar un frmulari HTML persnalizad Ejempl: <lgin-cnfig> <auth-methd>form</auth-methd> <realm-name>file</realm-name> <frm-lgin-cnfig> <frm-lgin-page>/lgn.jsp</frm-lgin-page> <frm-errr-page>/lgnerrr.jsp</frm-errr-page> </frm-lgin-cnfig> </lgin-cnfig> Tmad de [2] 32
Descripción web.xml 1. Mecanism de autenticación c. CLIENT-CERT: Maneja certificads El cliente envía un certificad de llave pública, almacenad en el navegadr del cliente a través de Secure Scket Layer (SSL) El servidr autentica el cntenid del certificad Estas credenciales sn validadas pr el prveedr de JAAS 33
Descripción web.xml 1. Mecanism de autenticación c. CLIENT-CERT: Maneja certificads Tmad de [2] 34
Descripción web.xml 1. Mecanism de autenticación c. CLIENT-CERT: Maneja certificads Tmad de [2] 35
Descripción Web.xml 2. <realm-name> Especifica el nmbre del dmini que se utiliza para la autenticar las credenciales del usuari. Este dmini está sbre el sistema de autenticación de JAAS 3. <security-cnstraint> Define ls privilegis de acces a una clección de recurss <web-resurce-cllectin> Define ls cmpnentes de la aplicación Web que aplican para este cnstraint <web-resurce-name> El nmbre de la clección de recurss web <url-pattern> Describe un patrón para identificar ls elements que aplican al cnstraint de seguridad <auth-cnstraint> Define ls grups que tienen acces a una clección de recurss Web, definids en el cnstraint <rl-name> Debe crrespnder cn algun de ls rles definids en el descriptr de ejecución para la aplicación 36
Seguridad - Nivel WEB En Glassfish para mapear un usuari cn un grup se utiliza el tag <security-rle-mapping> en el archiv descriptr sun-ejb-jar.xml <security-rle-mapping> <rle-name>emplyee</rle-name> <grup-name>bankemplyee</grup-name> </security-rle-mapping> Tmad de [3] 37
Agenda Intrducción Seguridad JEE Seguridad Declarativa Seguridad Prgramada Java Authenticatin and Authrizatin Services (JAAS) Seguridad Nivel Web Seguridad Nivel Ejb 38
Seguridad - Nivel EJB Nivel EJB Autenticación Aplica para ls beans de sesión y ls beans de mensaje N aplica para ls beans de entidad Cuand se despliega una aplicación, el administradr del sistema lcal debe mapear cada rl a ls grups definids 39
Seguridad - Nivel EJB La autenticación para EJB se puede realizar a través de un descriptr pr ejempl: sun-ejb-jar.xml <sun-ejb-jar> <enterprise-beans> <ejb> <ejb-name>bankservicebean</ejb-name> <ir-security-cnfig> <as-cntext> <auth-methd>username_password</auth-methd> <realm>default</realm> <required>true</required> </as-cntext> </ir-security-cnfig> </ejb> </enterprise-beans> </sun-ejb-jar> Un cliente EJB necesita usar autenticación IOR (Interperable Object Reference) Servici de autenticación Métd de autenticación Dmini de seguridad en el cual es autenticad el usuari Tmad de [3] Define si es requerida la autenticación de ls usuaris 40
Seguridad - Nivel EJB Para la Autrización a nivel de EJB, se puede utilizar la seguridad declarativa El cntenedr valida ls rles definids Especificación JSR-250 javax.anntatin.security.declarerles javax.anntatin.security.rlesallwed javax.anntatin.security.permitall javax.anntatin.security.denyall @DeclareRles("BIDDER "CSR", "ADMIN") @Stateless public class BidManagerBean implements BidManager { @RlesAllwed("CSR, ADMIN") public vid cancelbid(bid bid, Item item) {...} Declara rles Especifica rles que tienen acces al métd (Autrización) } @PermitAll public List<Bid> getbids(item item) {...} Cualquier rl puede ejecutar el métd 41 Tmad de [1]
Seguridad - Nivel EJB @DeclareRles Declara ls rles de seguridad utilizads en la aplicación Cuand n se definen, el sistema pr defect tma ls rles de @RlesAllwed y define una lista de rles @RlesAllwed A nivel de métds y a nivel de clase Define ls rles que pueden utilizar un métd ls métds de una clase 42
Seguridad - Nivel EJB @PermitAll El métd la clase pueden ser accedids pr cualquier rl @DenyAll Sól se implementa a nivel de métd Su funcinalidad es n accesible para cualquier rl NOTA: Las antacines @PermitAll, @DenyAll y @RleAllwed n pueden aplicarse en la misma clase simultáneamente 43
Seguridad - Nivel EJB @RunAs Se aplica a nivel de clase e indica el rl cn el que se ejecuta el Bean Se puede utilizar para agregar algún rl en particular durante la ejecución del bean del métd @RunAS("ADMIN") @RlesAllwed("CSR") public vid cancelbid(bid bid, Item item) {...} Tmad de [1] 44
Nivel EJB - Autenticación y Autrización Para la autrización a nivel EJB se puede utilizar la seguridad prgramada Permite manejar características específicas para ls usuaris Se validan ls rles a través del códig Se trabaja sbre el cntext de seguridad Interfaz javax.ejb.ejbcntext. Prvee ds métds: public java.security.principal getcallerprincipal() Permite que ls métds del bean btengan el nmbre del Principal. Ej: El nmbre del Principal puede ser utilizad para cnsultar una base de dats public blean iscallerinrle(string rlename) Valida si el rl tiene permis 45
Seguridad - Nivel EJB Ejempl autrización prgramada @Stateless public class BidManagerBean implements BidManager { @Resurce SessinCntext cntext;... public vid cancelbid(bid bid, Item item) { if (!cntext.iscallerinrle("csr")) { thrw new SecurityExceptin("N permissins + t cancel bid"); }... }... } Tmad de [1] 46
Seguridad - Nivel EJB @Stateless public class EmplyeeServiceBean implements EmplyeeService{ @Resurce SessinCntext ctx; @PersistenceCntext EntityManager em; public vid changephnenumber(...) {... // Obtain the caller principal callerprincipal = ctx.getcallerprincipal(); Se puede retrnar el nmbre del Principal // Obtain the caller principal s name.callerkey = callerprincipal.getname(); // Use callerkey as primary key t find EmplyeeRecrd EmplyeeRecrd myemplyeerecrd = em.findbyprimarykey(emplyeerecrd.class, callerkey); } } // Update phne number myemplyeerecrd.setphnenumber(...);... Busca el registr a partir del nmbre del Principal Tmad de [4] 47
Bibligrafía 1. EJB 3 in actin. Panda Debu, Rahman Reza, Lane Derek. Manning. 2007. 2. The Java EE 5 Tutrial Third Editin. Fr Sun Java System Applicatin Server Platfrm Editin 9. Eric Jendrck. 2006. 3. EJB 3 Develper Guide. Michael Sikra. Packt Publishing. BIRMINGHAM MUMBAI. 2008 4. http://java.sun.cm/javaee/5/dcs/tutrial/dc/bnbyl.html#bnbyn 48