2011-03-16 15 views
6

El estado documentos de seguridad de resorte (2.3.2):Seguridad de primavera: forzando https usando anotaciones?

Si su aplicación es compatible con los protocolos HTTP y HTTPS , y usted quiere que URL determinados sólo se puede acceder a través de HTTPS , entonces este es directamente apoyado utilizando la requiere canales atributo en:

<http> 
    <intercept-url pattern="/secure/**" access="ROLE_USER" requires-channel="https"/> 
    <intercept-url pattern="/**" access="ROLE_USER" requires-channel="any"/> 
    ... 
    </http> 

Pero estoy usando anotaciones en mis controladores, no interceptar-url elementos.

  • ¿Puedo aplicar HTTPS de forma selectiva a través de anotaciones?
  • ¿Puedo forzar HTTP para páginas no seguras?

Respuesta

3

De los documentos disponibles, parece que al usar solo las anotaciones puede que no sea posible aplicar la seguridad del canal.

+1

Parece que la única forma de hacerlo es a través de intercept-url, que parece socavar las anotaciones (he anotado todos mis controladores y no he usado la URL de intercepción hasta este punto, supongo que tendré que dar marcha atrás). Gracias por ofrecer su confirmación de esto, es bastante útil. –

1

Hay una serie de ejemplos que muestran cómo utilizar la anotación con Spring Security

http://www.jroller.com/habuma/entry/method_level_security_in_spring

spring not enforcing method security annotations

No entiendo lo que quiere decir forzando HTTP para no seguro páginas. Si no es seguro, entonces ya es HTTP.

+0

No detecté ningún punto en esos enlaces específicamente sobre cómo obligar al usuario a usar HTTPS con ** solo ** anotaciones. Y con respecto a HTTP, estaba pensando en degradar a los usuarios a HTTP cuando la transición de páginas seguras (como páginas de cuenta) vuelve a las páginas normales no seguras (como una forma de mantener el tráfico HTTPS al mínimo necesario). –

+0

@David: es más fácil dividir las páginas en seguras e inseguras por URL bruta (¡es mucho más fácil hacerlo bien!) Y si desea pasar de HTTPS a HTTP cuando vuelve a inseguro, tenga en cuenta que puede usar 'require- channel = "http" 'para hacer eso. –

Cuestiones relacionadas