Sie können Ihre EJB-Anwendung
mithilfe von Annotationen oder mithilfe von Implementierungsdeskriptoren schützen.
Wenn Sie vor Java™ EE 5 für eine bestimmte Anwendung Berechtigungen erteilen wollten,
mussten Sie Berechtigungsinformationen in den Implementierungsdeskriptoren der Anwendung,
"ejb-jar.xml" oder "web.xml", angeben. Sie können die Sicherheit in Ihrer Anwendung
direkt mit Annotationen konfigurieren.
Allgemeine Sicherheitsannotationen
JSR 250
definiert einige allgemeine
Sicherheitsannotationen. Es sind fünf Sicherheitsannotationen definiert:
- javax.annotation.security.PermitAll:
- Kann auf Typ- oder Methodenebene verwendet werden.
- Gibt an, dass alle Benutzer auf die angegebene Methode oder auf alle Geschäftsmethoden der angegebenen EJB
zugreifen können.
- javax.annotation.security.DenyAll:
- Kann auf Methodenebene verwendet werden.
- Gibt an, dass kein Benutzer auf die angegebene Methode in der EJB zugreifen kann.
- javax.annotation.security.RolesAllowed:
- Kann auf Typ- oder Methodenebene verwendet werden.
- Gibt an, dass auf die angegebene Methode oder auf alle Geschäftsmethoden in der EJB
die Benutzer zugreifen können, die der Liste der Rollen zugeordnet sind.
- javax.annotation.security.DeclareRoles:
- Kann auf Typebene verwendet werden.
- Definiert Rollen für die Sicherheitsprüfung. Muss von EJBContext.isCallerInRole,
HttpServletRequest.isUserInRole und WebServiceContext.isUserInRole verwendet werden.
- javax.annotation.security.RunAs:
- Kann auf Typebene verwendet werden.
- Gibt die Rolle "Ausführen als" für die angegebenen Komponenten an.
Beispiel:
@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;
}
}
In diesem Beispiel können alle Benutzer auf die Methode "hello()" zugreifen,
auf die Methode "goodbye()" jedoch nur Benutzer der Rolle "team".