Sicherheit, passwortgeschützte Seitenbereiche
Erweitern der Web-Session
-
In der Web-Session können zusätzliche Informationen (z.B. der angemeldete Benutzer) abgelegt werden. Dazu ist eine eigene
WebSession-Klasse mit entsprechenden Attributen zu erzeugen. -
Die zu verwendende Session-Klasse wird in der Web-Applikationsklasse durch Überschreiben der Methode
newSessionfestgelegt:public class SomeWicketApplication extends WebApplication { public Session newSession(Request request, Response response) { return new SomeAppSession(request); } }
-
Zugriff erfolgt mit
someComponent.getSession()bzw.Session.get().
Beispiel: Web-Session-Klasse
public class SomeAppSession extends WebSession {
private LoginVO login;
public SomeAppSession(Request request) {
super(request);
}
public static SomeAppSession get() {
return (SomeAppSession) Session.get();
}
public LoginVO getLogin() { /* ... */ }
public void setLogin(LoginVO login) { /* ... */ }
}
AuthorizationStrategy
-
Mit einer
IAuthorizationStrategykönnen Sicherheitsregeln für Wicket festgelegt werden. DieAuthorizationStrategywird in der Applikationsklasse konfiguriert:protected void init() { getSecuritySettings().setAuthorizationStrategy(new SomeAuthorizationStrategy()); }
-
Die Stategie erlaubt es, vor der Instantiierung von Wicket-Komponenten (
isInstantiationAuthorized) sowie vor Aktionen wie dem Rendern oder der Aktivierung von Komponenten (isActionAuthorized) Sicherheitsprüfungen durchzuführen und die Aktion ggf. zu verbieten.
Beispiel AuthorizationStrategy
public class SomeAuthorizationStrategy implements IAuthorizationStrategy {
public <T extends Component> boolean isInstantiationAuthorized(Class<T> componentClass) {
// only restrict access to Pages, allow LoginPage
if (!Page.class.isAssignableFrom(componentClass))
return true;
if (LoginPage.class.isAssignableFrom(componentClass))
return true;
// deny everything else if no session / login present
SomeAppSession session = SomeAppSession.get();
return session != null && session.getLogin() != null;
}
public boolean isActionAuthorized(Component component, Action action) {
// action: RENDER, ENABLE
return true;
}
}
Tipps und Tricks: Sicherheit
- Für die Auswertung der Sicherheitsregeln in einer eigenen
AuthorizationStrategykönnten Seiten auch mit eigenen Interfaces oder Annotations wie@LoginRequiredoder@RequiresRole(name = "...")versehen werden. - Spring Security (http://static.springsource.org/spring-security/site/) stellt fertige Security-Services bereit, die Benutzer und Rollen verwalten und Authentifizierung und Authorisierung durchführen. Damit können insb. existierende Systeme wie
LDAPoderOpenIDangebunden werden.

