j_spring_security_check - Spring Security: ¿cómo excluir ciertos recursos?
spring security tutorial (6)
No especifica el resto de su configuración y, dado que parece que tiene una configuración de beans explícita, es difícil para nosotros adivinar exactamente cómo configuró las cosas. Diré que alguna combinación de las respuestas anteriores es correcta.
- Si está utilizando Spr Sec 3, la respuesta de Gopi es correcta si desea habilitar las expresiones de SpEL (y tienen los beans correspondientes que pueden evaluarlos también configurados). Esto puede ser difícil si no está utilizando el espacio de nombres http.
- Si tiene configurado un filtro apropiado para configurar un SecurityContext para usuarios no autenticados (anónimos), entonces debería funcionar la función role = "IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED" o alguna combinación de los mismos.
- Si todo lo demás falla, como han sugerido varias personas, filters = "none" hará lo que usted desee, pero tenga cuidado de que realmente no necesite nada relacionado con Spring Security en el código subyacente de las páginas que está procesando; de lo contrario, puede encontrarse rascándose la cabeza más adelante.
¡Buena suerte!
Tengo la siguiente definición ...
<bean id="fsi" class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="accessDecisionManager" ref="httpRequestAccessDecisionManager"/>
<property name="objectDefinitionSource">
<sec:filter-invocation-definition-source >
<sec:intercept-url pattern="/secure/css/**" access="ROLE_TIER0"/>
<sec:intercept-url pattern="/secure/images/**" access="ROLE_TIER0"/>
<sec:intercept-url pattern="/**" access="ROLE_TIER0"/>
</sec:filter-invocation-definition-source>
</property>
</bean>
Me gustaría tener los recursos en esta url ...
"/no seguro/**"
Abierto a todas las llamadas, es decir, sin seguridad a su alrededor.
He intentado agregar ...
<sec:intercept-url pattern="/nonsecure/**" access="permitAll" />
Pero esto hace que Websphere arroje un error sobre
Unsupported configuration attributes: [permitAll]
¿Alguien puede decirme cómo excluir esta URL de la seguridad?
Para poder usar expresiones como [permitAll], debe agregar un WebExpressionVoter a su AccessDecisionManager
Creo que debe agregar la etiqueta use-expressions
a su configuración http
en security xml, por ejemplo:
<http auto-config="true" use-expressions="true">
...
...
</http>
Editar: Bueno, no estoy seguro de qué versión de seguridad de primavera está utilizando. Sé que esto funciona en 3.0, pero para versiones anteriores no estoy seguro.
En Spring security 3.1.x, el uso de filters = "none" está en desuso. En cambio, usa varias etiquetas <http>
como esta:
<http pattern="/nonsecure/**" security="none"/>
Tratar:
<sec:intercept-url pattern="/nonsecure/**" filters="none" />
<security:http auto-config=''true''>
<security:intercept-url pattern="/getfeed/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<security:intercept-url pattern="/**" access="ROLE_USER, ROLE_ADMIN" />
<security:http-basic />
</security:http>
access = " IS_AUTHENTICATED_ANONYMOUSLY " es la solución. Lo encontré en el siguiente enlace http://syntx.io/adding-http-basic-auth-to-restful-services-in-java-and-spring/
Los interceptos se evalúan de arriba hacia abajo. Si escribe esto / ** before / getIntelFeed / **, todo el servicio pasará por / ** y la seguridad se aplicará a todos los servicios. En tal caso, getIntelFeed / ** sería ineficaz.