Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SEGURIDAD JAVAEE
INTRODUCCIÓN
Usuario autorizado
INTRODUCCIÓN
CARACTERÍSTICAS DE LA SEGURIDAD DE
APLICACIÓN
Método Descripción
Devuelve todos los Principals contenidos en el
public Set getPrincipals();
Subject
Refreshable
La interface javax.security.auth.Refreshable proporciona a un
credencial la carcaterística de actualizarse a sí mismo. Por ejemplo,
un credencial que caduca con el tiempo puede implementar esta
interface para permitir a los llamantes actualizar el periodo de
tiempo durante el cuál es válido.
Método Descripción
Este método determina si el credencial
boolean isCurrent();
es válido o esta caducado.
Este método actualiza o aumenta el
periodo de validez de un credencial.
El método implementado debería
void refresh() throws
ejecutar un AuthPermission
RefreshFailedException;
("refreshCredential") para asegurar
que el llamante tiene permisos para
actualizar el credencial
JAAS
COMMON CLASSES: CREDENCIAL
Destroyable
La interface javax.security.auth.Destroyable proporciona la
capacidad de destruir el contenido dentro de un credencial.
Método Descripción
La clase javax.security.auth.login.LoginContext
proporciona los métodos básicos para autenticar
sujetos y la manera de desarrollar una aplicación
independiente de la tecnología de autenticación
subyacente.
El LoginContext consulta una Configuration para
determinar los servicios de autenticación o
LoginModules, configurados para una aplicación
particular.
Asimismo, diferentes LoginModules pueden ser
añadidos sin que se requiera ninguna modificación de
la aplicación en sí misma.
JAAS
AUTHENTICATION CLASSES E INTERFACES: LOGINCONTEXT
Constructores:
public LoginContext(String name) throws LoginException;
public LoginContext(String name, Subject subject) throws
LoginException;
public LoginContext(String name, CallbackHandler callbackHandler)
throws LoginException
public LoginContext(String name, Subject subject,
CallbackHandler callbackHandler) throws LoginException
JAAS
AUTHENTICATION CLASSES E INTERFACES: LOGINCONTEXT
El paquete javax.security.auth.callback
contiene el interfaz CallBack, así como
varias implementaciones de la misma.
Algunas de estas implementaciones son
las anteriormente mencionadas:
NameCallback y PasswordCallback.
JAAS
AUTHORIZATION CLASSES
Para que una autorización JAAS tenga lugar, se
requiere la siguiente situación:
1. El usuario debe estar autenticado
2. El Subject resultado de la autenticación debe estar
asociado con un contexto de control de acceso
3. Deben estar configuradas las entradas referentes
a qué Principals tienen permiso a qué recursos en
el fichero de política de seguridad, como veremos
más adelante.
JAAS
AUTHORIZATION CLASSES: POLICY
La clase java.security.Policy es una clase
abstracta para representar la política de
acceso del sistema. Por defecto, la J2SDK
proporciona una subclase basada en ficheros,
con soporte a entradas grant basadas en
Principals en ficheros de política
JAAS
AUTHORIZATION CLASSES: AUTHPERMISSION
La clase javax.security.auth.AuthPermission encapsula los
permisos básicos requeridos por JAAS
Además de los constructores proporcionados por su superclase
(java.security.Permission), la clase AuthPermission tiene estos
dos constructores:
public AuthPermission(String name);
public AuthPermission(String name, String actions);
JAAS
AUTHORIZATION CLASSES: AUTHPERMISSION
getSubject - allow for the retrieval of the refreshCredential - allow code to invoke the refresh
Subject(s) associated with the method on a credential which implements
current Thread.
the Refreshable interface.
setReadOnly - allow the caller to set a Subject
to be read-only. destroyCredential - allow code to invoke the destroy
method on a credential object
modifyPrincipals - allow the caller to modify the Set which implements the Destroyable
of Principals associated with a
Subject interface.
La clase javax.security.auth.PrivateCredentialPermission
protege el acceso a los credenciales privados de un Subject.
JAAS
CONFIGURACIÓN DEL FICHERO DE PROPIEDADES DE SEGURIDAD
JAVA_HOME/lib/security/java.security
JAVA.SECURITY (Solaris)
JAVA_HOME\lib\security\java.security (Win32)
JAAS
CONFIGURACIÓN DEL FICHERO DE PROPIEDADES DE SEGURIDAD
JAVA.SECURITY
Policy Provider
Siqueremos especificar un proveedor de
políticas alternativo al de por defecto
debemos modificar la siguiente propiedad
del fichero java.security:
policy.provider
<login-config>
<auth-method>FORM</auth-method>
<realm-name>file</realm-name>
<form-login-config>
<form-login-page>/logon.jsp</form-login-
page>
<form-error-page>/logonError.jsp</form-
error-page>
</form-login-config>
</login-config>
SEGURIDAD EN JAVAEE
AUTENTICACIÓN Y AUTORIZACIÓN EN LA CAPA WEB
<form method="POST"
action="j_security_check">
<input type="text" name="j_username">
<input type="password" name="j_password">
</form>
SEGURIDAD EN JAVAEE
AUTENTICACIÓN Y AUTORIZACIÓN EN LA CAPA WEB
FORM (Form-Based Authentication) (V)
Form-based Authentication envía el nombre de usuario y contraseña a
través de Internet como texto plano y, además, el servidor de destino no
esta autenticado. Si alguien consigue interceptar la transmisión, el
nombre de usuario y contraseña pueden ser fácilmente decodificados.
Sin embargo, cuando se usa un protocolo de transmisión seguro, como
SSL en conjunción con el form-based authentication se puede reducir
este problema.
SEGURIDAD EN JAVAEE
AUTENTICACIÓN Y AUTORIZACIÓN EN LA CAPA WEB
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
SEGURIDAD EN JAVAEE
AUTENTICACIÓN Y AUTORIZACIÓN EN LA CAPA WEB
Certificate-based
mutual authentication
User name- and password-based mutual
authentication
SEGURIDAD EN JAVAEE
AUTENTICACIÓN Y AUTORIZACIÓN EN LA CAPA
WEB
Programático
@PermitAll (3)
public List<Bid> getBids(Item item) {...}
}
SEGURIDAD EN JAVAEE
AUTENTICACIÓN Y AUTORIZACIÓN EJB
@Stateless
public class BidManagerBean implements BidManager {
@Resource SessionContext context; (1)
...
public void cancelBid(Bid bid, Item item) {
if (!context.isCallerInRole("CSR")) { (2)
throw new SecurityException( "No permissions
to cancel bid"); (3)
}
...
}
...
}
SEGURIDAD EN JAVAEE
AUTENTICACIÓN Y AUTORIZACIÓN EJB