Estoy usando Wicket con Wicket Auth Project para mi capa de presentación y, por lo tanto, la he integrado con Spring Security. Este es el método que se llama por Wicket para la autenticación para mí:Uso programático de 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;
}
El contenido (en el interior) de mi configuración XML 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ón 2.3.6. Session Fixation Attack Protection de la documentación de referencia dice:
ataques de fijación de sesión son un riesgo potencial donde es posible por un atacante malintencionado para crear un sesión accediendo a un sitio, luego persuade a otro usuario a iniciar sesión con la misma sesión (enviándoles un enlace que contiene el identificador de sesión como un parámetro, por ejemplo). Primavera Security protege contra esta de forma automática mediante la creación de una nueva sesión cuando un usuario inicia sesión. Si no requieren esta protección, o entra en conflicto con algún otro requisito, que pueden controlar el comportamiento utilizando el session- la fijación de protección contra atributo, que tiene tres opciones:
- migrateSession - crea una nueva sesión y copia los atributos de sesión existente a la nueva sesión. Este es el 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 de .
Las obras de autenticación, pero como estoy bastante nuevo en la primavera de Seguridad Tengo algunas preguntas que necesito respuestas demasiado:
- Normalmente para inicio de sesión, que iba a publicar la autentificación información al
j_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 sesiones, ¿lo obtendré cuando realice un inicio de sesión programático como lo hago? Y si no, ¿qué tendría que hacer para obtenerlo? - ¿Cómo realizo el cierre de sesión programático?
- Como usaré el inicio de sesión y el cierre de sesión programáticos, ¿cómo desactivo que Spring intercepte esas URL?
Actualización: Para la sesión protección contra ataques de fijación parece que tengo que llamar al método en la clase SessionUtils con la firma startNewSessionIfRequired(HttpServletRequest request, boolean migrateAttributes, SessionRegistry sessionRegistry)
.
¿Cómo obtengo la instancia de SessionRegistry que necesito pasar? No puedo encontrar ninguna forma de crear una ID de alias, o cómo obtener su ID o nombre.
Bounty a la primera publicación de una respuesta para las tres preguntas anteriores –
Hey Kent - respondí las preguntas y dejar que la recompensa está sobrepasado - por qué ? – Pablojim
Lo siento, tuve algunos asuntos personales que me impidieron iniciar sesión. –