Ich verwende Wicket mit dem Wicket Auth-Projekt für meine Präsentationsebene und ich habe es daher mit Spring Security integriert. Dies ist die Methode, die von Wicket für die Authentifizierung für mich genannt wird:Programmatische Verwendung von Spring Security
@Override
public boolean authenticate(String username, String password) {
try {
Authentication request = new UsernamePasswordAuthenticationToken(
username, password);
Authentication result = authenticationManager.authenticate(request);
SecurityContextHolder.getContext().setAuthentication(result);
} catch (AuthenticationException e) {
return false;
}
return true;
}
Der Inhalt (innen) meiner Spring Security XML-Konfiguration sind:
<http path-type="regex">
<form-login login-page="/signin"/>
<logout logout-url="/logout" />
</http>
<global-method-security secured-annotations="enabled" />
<authentication-manager alias="authenticationManager"/>
<authentication-provider user-service-ref="userService">
<password-encoder ref="bcryptpasswordencoder" />
</authentication-provider>
Der Abschnitt 2.3.6. Session Fixation Attack Protection der Referenzdokumentation sagt:
Fixierung Session-Angriffe sind ein potenzielles Risiko, wo es möglich einen böswilligen Angreifer ist ein erstellen Sitzung durch Zugriff auf eine Website, dann einen anderen Benutzer überreden, mit die gleiche Sitzung einzuleiten (indem Sie ihnen eine Verbindung mit dem Sitzungsbezeichner als Parameter senden, zum Beispiel). Frühling Security schützt gegen diese automatisch durch eine neue Sitzung erstellen, wenn sich ein Benutzer anmeldet. Wenn Sie nicht diesen Schutz benötigen, oder es Konflikte mit einer anderen Anforderung, Sie das Verhalten mit Kontrolle kann der Session- Fixierung Schutz Attribut auf, die drei Optionen:
- migrateSession - erstellt eine neue Sitzung und kopiert die vorhandenen Sitzung auf die neue Session-Attribute. Dies ist der Standardwert.
- keine - Tun Sie nichts. Die ursprüngliche Sitzung wird beibehalten.
- newSession - Erstellen Sie eine neue "saubere" Sitzung, ohne die vorhandenen Sitzungsdaten zu kopieren.
Die Authentifizierung funktioniert, aber ich, als ich auf Spring Security ziemlich neu bin habe ich einige Fragen, die ich Antworten zu müssen:
- Normalerweise für die Anmeldung, würde ich die Authentifizierung POST Informationen zu
j_spring_security_check
und lassen Spring Security den tatsächlichen Authentifizierungscode ausführen. Ich hätte gerne Schutz vor Session-Fixation-Attacken, werde ich es bekommen, wenn ich wie ich einen programmatischen Login mache? Und wenn nicht, was müsste ich tun, um es zu bekommen? - Wie führe ich eine programmgesteuerte Abmeldung durch?
- Wie werde ich die programmatische An- und Abmeldung verwenden, wie sperre ich Spring abfangen diese URLs?
Update: Für Sitzungsschutz-Fixierung Angriff scheint es, dass ich die Methode in der SessionUtils Klasse mit der Unterschrift startNewSessionIfRequired(HttpServletRequest request, boolean migrateAttributes, SessionRegistry sessionRegistry)
anrufen müssen.
Wie bekomme ich die SessionRegistry-Instanz, die ich übergeben muss? Ich kann keine Möglichkeit finden, eine Alias-ID für sie zu erstellen, oder wie sie ihre ID oder ihren Namen erhält.
Bounty zur ersten gegeben wird, um eine Antwort auf die drei Fragen über –
Hey Kent veröffentlichen - ich die Fragen beantwortet und Ihnen die Prämie lassen abgelaufen - warum ? – Pablojim
Sorry, ich hatte einige persönliche Angelegenheiten, die mich davon abhalten, mich einzuloggen. –