Vamos con algo sencillo el dÃa de hoy. Ante la llegada hace unos meses ya de Spring Security 3.0 y con estupendas novedades y sus cambios.
Si ya has migrado te habrás dado cuenta que muchos de los nombres de los paquetes han cambiado.
import org.springframework.security.Authentication; import org.springframework.security.context.SecurityContext; import org.springframework.security.context.SecurityContextHolder; import org.springframework.security.context.SecurityContextImpl; import org.springframework.security.providers.openid.OpenIDAuthenticationStatus; import org.springframework.security.providers.openid.OpenIDAuthenticationToken; import org.springframework.security.userdetails.UserDetails; import org.springframework.security.userdetails.UserDetailsService;
antes se llamaban
import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextImpl; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.openid.OpenIDAuthenticationStatus; import org.springframework.security.openid.OpenIDAuthenticationToken;
No solo estas clases han cambiado, en mi migración de hace unos dias me encontre que con el 70% de las clases que usaba habian sido cambiadas, fue todo un dolor de cabeza al principio.
Nota: no te olvides de agregar los filtros en el web.xml eso no ha cambiado para nada en la 3.0.
Actualizando con Maven
Yo ahora mismo estoy trabajando con la versión 3.0.2.RELEASE y es bastante estable aunque tiene un bug con la integración en Spring Web Flow.
El uso de propiedades en Maven es muy recomendable, si mañana quieres actualizar a otra versión es mucho mas comodo cambiar en un solo lugar, existen muchos otros JAR disponibles en Spring Security como (CAS, ASL o Spring Web) que tambien puedes agregar como dependencia, segun tus necesidades.
<properties> <spring.security.version>3.0.2.RELEASE</spring.security.version> </properties> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${spring.security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>${spring.security.version}</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-ldap</artifactId> <version>${spring.security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-openid</artifactId> <version>${spring.security.version}</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-taglibs</artifactId> <version>${spring.security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${spring.security.version}</version> </dependency>
Otra cosa que debes modificar o agregar si es una nueva configuración es en los namespaces.
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:security="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"> </beans>
Configuración MÃnima
Spring Security 3.0 nos permite desde una configuración sencilla hasta las mas completas, según la documentacion esto es lo mÃnimo que necesitas.
En este caso se podria llamar una versión amateur de la configuración real con beans en Spring Security, ellos nos ofrecen este
<http auto-config='true'> <intercept-url pattern="/**" access="ROLE_USER" /> </http>
Y pudiendose extender a algo mas complejo (complejo dentro de la sencille) como:
<security:http auto-config="false" entry-point-ref="authenticationEntryPoint" access-decision-manager-ref="voteAccessDecisionManager" > <security:intercept-url pattern="/**" access="ENCUESTAME_ANONYMOUS" /> <security:intercept-url pattern="/admon/**/*" access="ENCUESTAME_ADMIN" /> <security:intercept-url pattern="/tweet/" access="ENCUESTAME_ANONYMOUS" /> <security:intercept-url pattern="/" access="ENCUESTAME_ANONYMOUS" /> <security:intercept-url pattern="/**/*.xhtml" filters="none" /> <security:intercept-url pattern="/**/*.css" filters="none" /> <security:intercept-url pattern="/images/**" filters="none" /> <security:intercept-url pattern="/js/**" filters="none" /> <security:remember-me key="12345" services-alias="_rememberMeServices" /> <security:anonymous key="12345" /> <security:logout logout-success-url="/index.html" logout-url="/logout"/> <security:custom-filter position="FORM_LOGIN_FILTER" ref="authenticationFilter" /> <security:custom-filter position="ANONYMOUS_FILTER" ref="anonymousAuthFilter" /> </security:http>
Para aprender algo más sobre los multiples filtros que ofrece Spring Security en versiones anteriores, en este mismo blog postee algunos artÃculos.

