Segurança de primavera com Maven
1. Visão geral
Este artigo explicará como configurarSpring Security with Mavene abordará casos de uso específicos de uso de dependências do Spring Security. Os últimos lançamentos do Spring Security podem ser encontradoson Maven Central.
Este é um seguimento doSpring with Maven article anterior, portanto, para dependências do Spring não relacionadas à segurança, este é o lugar por onde começar.
2. Segurança de primavera com Maven
2.1. spring-security-core
O suporte do Core Spring Security -spring-security-core - contém autenticação e funcionalidade de controle de acesso, e tem suporte para aplicativos autônomos (não web), segurança de nível de método e JDBC:
5.0.6.RELEASE
5.0.6.RELEASE
org.springframework.security
spring-security-core
${spring-security.version}
Observe queSpring and Spring Security are on different release schedules, portanto, nem sempre há uma correspondência 1: 1 entre os números de versão.
Se você estiver trabalhando com versões mais antigas do Spring - também é muito importante entender o fato de que, não intuitivamente,Spring Security 3.1.x do not depend on Spring 3.1.x releases! Isso ocorre porque o Spring Security 3.1.x foi lançado antes do Spring 3.1. O plano é alinhar essas dependências mais de perto em versões futuras - consultethis JIRA para obter mais detalhes - mas, por enquanto, isso tem implicações práticas que veremos a seguir.
2.2. spring-security-web
Para adicionarWeb support for Spring Security, a dependênciaspring-security-web é necessária:
org.springframework.security
spring-security-web
${spring-security.version}
Ele contém filtros e infraestrutura de segurança da Web relacionada, permitindo o controle de acesso à URL em um ambiente de Servlet.
2.3. Problema de segurança do Spring e dependências do Spring Core mais antigas __
Essa nova dependência também exibea problem for the Maven dependency graph - como mencionado acima, os jars do Spring Security não dependem dos jars de núcleo do Spring mais recentes (mas da versão anterior). Isso pode fazer com que essesolder dependencies cheguem ao topo do caminho de classe em vez dos artefatos 4.x mais novos do Spring.
Para entender por que isso está acontecendo, precisamos ver comoMaven resolves conficts - no caso de um conflito de versão, o Maven escolherá o jar que está mais próximo da raiz da árvore. No nosso caso,spring-core é definido porspring-orm (com a versão4.x.RELEASE), mas também porspring-security-core (com a versão antiga3.2.8.RELEASE) - então em em ambos os casos,spring-jdbc é definido a uma profundidade de 1 a partir do pom raiz do nosso projeto. Por causa disso, realmente fará diferença em que ordemspring-ormespring-security-core são definidos em nosso próprio pom - o primeiro terá prioridade entãowe may end up with either version on our classpath.
Para resolver este problema, teremos queexplicitly define some of the Spring dependencies em nosso próprio pom e não depender do mecanismo implícito de resolução de dependência do Maven - fazer isso colocará essa dependência particular na profundidade 0 de nosso pom (como está definido no próprio pom ) por isso terá prioridade. Todos os itens a seguir se enquadram na mesma categoria e todos precisam ser explicitamente definidos, seja diretamente ou, para projetos de vários módulos, no elementodependencyManagement do pai:
org.springframework
spring-core
${spring-version}
org.springframework
spring-context
${spring-version}
org.springframework
spring-jdbc
${spring-version}
org.springframework
spring-beans
${spring-version}
org.springframework
spring-aop
${spring-version}
org.springframework
spring-tx
${spring-version}
org.springframework
spring-expression
${spring-version}
org.springframework
spring-web
${spring-version}
2.4. spring-security-config e outros
Para usar o namespace XML do Rich Spring Security, a dependênciaspring-security-config será necessária:
org.springframework.security
spring-security-config
${spring-security.version}
runtime
Nenhum código de aplicativo deve ser compilado com base nessa dependência, portanto, deve serscoped as runtime.
Finalmente, o suporte a LDAP, ACL, CAS e OpenID tem suas próprias dependências no Spring Security:spring-security-ldap,spring-security-acl,spring-security-casespring-security-openid.
3. Usando instantâneos e marcos
Spring Securitymilestones, bem comosnapshots, estão disponíveis nos repositórios Maven personalizados fornecidos pelo Spring - para obter detalhes adicionais sobre como configurá-los, consultehow to use Snapshots and Milestones.
4. Conclusão
Este artigo discute os detalhes práticos do uso deSpring Security with Maven. As dependências do Maven apresentadas aqui são, obviamente, algumas das principais, e existem várias outras que podem ser mencionadas e ainda não foram definidas. No entanto, esse deve ser um bom ponto de partida para o uso do Spring em um projeto habilitado para Maven.