Uso programático de Spring Security

estoy usandoPostigo con el proyecto de autenticación Wicket para mi capa de presentación y, por lo tanto, lo he integrado con Spring Security. Este es el método que Wicket llama para la autenticación:

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

Los contenidos (dentro) de mi configuración XML de Spring Security son:

<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>

La sección2.3.6. Fijación de sesión de protección contra ataques de la documentación de referencia dice:

Los ataques de fijación de sesión son un riesgo potencial cuando un atacante malintencionado puede crear una sesión accediendo a un sitio, y luego convencer a otro usuario para que inicie sesión con la misma sesión (enviándoles un enlace que contiene el identificador de sesión como parámetro, por ejemplo). ejemplo). Spring Security protege contra esto automáticamente al crear una nueva sesión cuando un usuario inicia sesión. Si no necesita esta protección, o entra en conflicto con algún otro requisito, puede controlar el comportamiento usando el atributo de protección de reparación de sesión, que tiene tres opciones:

migrateSession: crea una nueva sesión y copia los atributos de sesión existentes a la nueva sesión. Este es el valor predeterminado.ninguno - no hagas nada La sesión original será retenida.newSession: crea una nueva sesión "limpia", sin copiar los datos de sesión existentes.

La autenticación funciona, pero como soy bastante nuevo en Spring Security, tengo algunas preguntas que también necesito respuestas:

Normalmente para el inicio de sesión, enviaría la información de autenticación aj_spring_security_check y deje que Spring Security realice el código de autenticación real. Me gustaría tener protección contra los ataques de fijación de sesión, ¿lo obtendré cuando realice un inicio de sesión programático como lo hago? Y si no, ¿qué tendría que hacer para conseguirlo?¿Cómo realizo el cierre de sesión programático?Como usaré el inicio de sesión programado y el cierre de sesión, ¿cómo deshabilito a Spring para que no intercepte esas URL?

Actualizar: Para la protección de ataques de fijación de sesión parece que necesito llamar al método en la clase SessionUtils con la firmastartNewSessionIfRequired(HttpServletRequest request, boolean migrateAttributes, SessionRegistry sessionRegistry).

¿Cómo obtengo la instancia SessionRegistry que necesito pasar? No puedo encontrar ninguna manera de crear un ID de alias para él, o cómo obtener su ID o nombre.

Respuestas a la pregunta(6)

Su respuesta a la pregunta