Programmatische Nutzung von Spring Security

ich benutzeWicket mit dem Wicket Auth Project für meine Präsentationsschicht und ich habe es daher mit Spring Security integriert. Dies ist die Methode, die Wicket für mich zur Authentifizierung aufruft:

@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;
}

Die Inhalte (innerhalb) 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>

Die Sektion2.3.6. Schutz vor Sitzungsfixierungsangriffen In der Referenzdokumentation heißt es:

Sitzungsfixierungsangriffe stellen ein potenzielles Risiko dar, bei dem ein böswilliger Angreifer eine Sitzung erstellen kann, indem er auf eine Website zugreift und dann einen anderen Benutzer dazu verleitet, sich mit derselben Sitzung anzumelden (indem er ihm einen Link sendet, der die Sitzungskennung als Parameter enthält, z Beispiel). Spring Security schützt sich automatisch davor, indem eine neue Sitzung erstellt wird, wenn sich ein Benutzer anmeldet. Wenn Sie diesen Schutz nicht benötigen oder wenn er mit einer anderen Anforderung in Konflikt steht, können Sie das Verhalten mithilfe des Attributs "Sitzungsfixierungsschutz" steuern hat drei Möglichkeiten:

migrateSession - Erstellt eine neue Sitzung und kopiert die vorhandenen Sitzungsattribute in die neue Sitzung. Dies ist die Standardeinstellung.none - Tu nichts. Die ursprüngliche Sitzung wird beibehalten.newSession - Erstellt eine neue "saubere" Sitzung, ohne die vorhandenen Sitzungsdaten zu kopieren.

Die Authentifizierung funktioniert, aber als Neuling bei Spring Security habe ich einige Fragen, auf die ich auch Antworten brauche:

Normalerweise würde ich für die Anmeldung die Authentifizierungsinformationen an POSTENj_spring_security_check und lassen Sie Spring Security den eigentlichen Authentifizierungscode ausführen. Ich möchte einen Schutz gegen Sitzungsfixierungsangriffe erhalten. Erhalte ich diesen Schutz, wenn ich mich wie gewohnt programmgesteuert anmelde? Und wenn nicht, was müsste ich tun, um es zu bekommen?Wie führe ich eine programmgesteuerte Abmeldung durch?Wie kann ich Spring daran hindern, diese URLs abzufangen, da ich die programmgesteuerte An- und Abmeldung verwende?

Aktualisieren: Zum Schutz vor Sitzungsfixierungsangriffen muss ich anscheinend die Methode in der SessionUtils-Klasse mit der Signatur aufrufenstartNewSessionIfRequired(HttpServletRequest request, boolean migrateAttributes, SessionRegistry sessionRegistry).

Wie erhalte ich die SessionRegistry-Instanz, die ich übergeben muss? Ich kann keine Möglichkeit finden, eine Alias-ID dafür zu erstellen oder eine ID oder einen Namen zu erhalten.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage