Tengo la seguridad de muelles configurada usando la autenticación básica y basada en formulario según auto-config='true'
.¿Cómo puedo desactivar el inicio de sesión basado en formulario de primavera para puntos finales RESTful?
Me gustaría que los puntos finales en /api/**
NO usen la seguridad basada en formularios. Otros puntos finales fuera de /api/**
deben usar el inicio de sesión basado en el formulario. Me gustaría que se enviara una respuesta 401
a cualquier llamada para estos puntos finales que no proporcionaron credenciales bajo /api/**
.
ACTUALIZACIÓN: Gracias al comentario de Luke Taylor a continuación, he encontrado la siguiente solución.
NOTA: Esta técnica solo se puede aplicar a partir de Spring-security 3.1.
Primero llamé /api/**
. Nunca creamos una sesión aunque use una si está disponible, esto es manejado por create-session="never"
y el uso de <session-management/>
.
<http pattern="/api/**" create-session="never" use-expressions="true">
<http-basic />
<session-management />
<intercept-url pattern="/api/**" access="hasRole('API_ACCESS')"/>
</http>
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/" access="permitAll"/>
<intercept-url pattern="/**" access="isAuthenticated()"/>
</http>
Mira aquí http://www.baeldung.com/2011/10/31/securing-a-restful-web-service-with-spring-security-3-1-part-3/. En este tutorial puedes encontrar algunas respuestas a tus preguntas. – dimas
Vea mi respuesta a [esta pregunta] (http://stackoverflow.com/questions/9302795/handling-both-form-and-http-basic-authentication-with-different-sources) que esencialmente está preguntando lo mismo. –
Hola Luke, en teoría, esto parece lo que busco e investigaré su aplicación. Al tener múltiples etiquetas '' podrían accidentalmente manejar la solicitud? Tal vez pueda usar SpEL para que coincida con cualquier cosa que no sea '/ api'. No sabía que en primavera-seguridad 3.1 ahora permiten múltiples etiquetas '', esto es algo bueno. –