Puede proteger una aplicación
EJB mediante anotaciones o descriptores de despliegue.
Antes de la aparición de Java™ EE 5, si
deseaba utilizar la función de autorización para una aplicación determinada, era
necesario especificar información de autorización en los descriptores de despliegue
de la aplicación, ejb-jar.xml o web.xml. Ahora puede configurar la seguridad en sus
aplicaciones directamente mediante anotaciones.
Anotaciones de seguridad comunes
La especificación JSR 250 define varias anotaciones de seguridad comunes. Se definen cinco anotaciones
de seguridad:
- javax.annotation.security.PermitAll:
- Se puede utilizar a nivel de tipo o método.
- Indica que todo el mundo puede acceder al método especificado o a todos los
métodos de negocio del EJB especificado.
- javax.annotation.security.DenyAll:
- Se puede utilizar a nivel de método.
- Indica que nadie puede acceder al método especificado del EJB.
- javax.annotation.security.RolesAllowed:
- Se puede utilizar a nivel de tipo o método.
- Indica que los usuarios asociados a la lista de roles pueden acceder al método
especificado o a todos los métodos de negocio del EJB.
- javax.annotation.security.DeclareRoles:
- Se puede utilizar a nivel de tipo.
- Define roles para la comprobación de seguridad. Puede ser utilizado por
EJBContext.isCallerInRole, HttpServletRequest.isUserInRole y
WebServiceContext.isUserInRole.
- javax.annotation.security.RunAs:
- Se puede utilizar a nivel de tipo.
- Especifica el rol run-as para los componentes especificados.
Ejemplo:
@Stateless
@RolesAllowed("team")
public class TestEJB implements Test {
@PermitAll
public String hello(String msg) {
return "Hello, " + msg;
}
public String goodbye(String msg) {
return "Goodbye, " + msg;
}
}
En este ejemplo, todo el mundo puede acceder al método hello() y
los usuarios del rol team pueden acceder a goodbye().