Usando Spring Security

19/05/2011

0

Ao usar o Spring Security é necessário instalar o Spring? Ou posso somente utilizar esse pedaço do framework, adicionar os jars relativos a ele e pronto? Tenho uma pequena app sem o Spring, mas gostaria na parte de login usar o Spring Security. É possível?
Pjava

Pjava

Responder

Posts

19/05/2011

Anthony Accioly

Opa,
Link oficial da resposta à sua pergunta: http://www.acegisecurity.org/standalone.html.
Em miúdos, há uma certa amarração do Spring Security com o ApplicationContext do Spring, e desamarrar essa dependência é contra-produtiva (porém, pode ser feito). Uma solução possível, porém, é usar o Spring exclusivamente para configurar o Acegi e ignorar todas as suas outras funcionalidades. 
Dessa forma, sim, você pode adicionar os jars, fazer uma configuração trivial do Spring e usá-lo exclusivamente para lidar com a parte de Segurança.
Abraços,
Responder

19/05/2011

Davi Costa

Seguinte, o Spring Security é um framework excelente e de fácil configuração com qualquer projeto web.
Vc consegue usar esse framework, com struts, jsf, mesmo usando ejb para injeção de dependência.

Att Davi
Responder

19/05/2011

Davi Costa

Só compelementando, cara tem artigos muito bons inclusive com fontes para baixar para quem é assinante javaMagazine.
É uma mão na roda mesmo, inclusive nos fontes eles não usam Spring, só Spring Security.


Att Davi
Responder

19/05/2011

Anthony Accioly


 inclusive nos fontes eles não usam Spring, só Spring Security.

 
 

Davi, só dando uma refraseada (corrija-me se eu estiver errado). Sem Spring significa com o jar do Spring e um arquivo de configuração básica, porém sem usar outras features do framework correto? Ou tem algum artigo aqui na JavaMagazine que está fazendo o que foi apontado no meu link acima para emular o ApplicationContext?
Responder

20/05/2011

Davi Costa

Não sei se vc tem acesso a esse link:

https://www.devmedia.com.br/websys.2/webreader.asp?cat=6&;revista=javamagazine_69#a-1591

inclusive tem os fontes aqui da app bem legal mesmo.

caso não tenha acesso me avisa, que dou um jeito de te passar alguma app de exemplo.

Basicamente mantenho meu web.xml , mas lá aviso onde vai ficar o arquivo de configuração do security:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   
    <!-- spring -->
    <listener>
        <description>Carrega o applicationContext.xml do spring na inicializacao</description>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
   
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-security-config.xml</param-value>
    </context-param>
    <!-- spring -->
   
    <!-- spring-security -->
    <filter>
        <description>Filtro de seguranca implementando pelo Spring-Security</description>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
     
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- spring-security -->
   
    <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
   
</web-app>

e nesse arquivo eu configuro da forma que eu quiser, usando base de dados ou não, abaixo segue um exemplo:

<?xml version="1.0" encoding="ISO-8859-1"?>

<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"  
    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-2.5.xsd
        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.2.xsd">
   
    <http auto-config="true" access-denied-page="/accessDenied.jsp">
        <intercept-url pattern="/usuarios/**" access="ROLE_USUARIO,ROLE_ADMIN" />
        <intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
       
        <form-login login-page="/login.jsp"   
            authentication-failure-url="/login.jsp?login_error=true" default-target-url="/index.jsp" />
    </http>
   
    <authentication-provider user-service-ref="customUserService">
        <password-encoder hash="md5" />
    </authentication-provider>
   
    <beans:bean id="customUserService" class="br.com.jm.security.CustomUserDetailsService">
        <beans:property name="dataSource" ref="dataSource" />
        <beans:property name="usersByUsernameQuery" value="select login as username, senha as password, ativo as enabled from usuario where login = ?" />
        <beans:property name="authoritiesByUsernameQuery" value="select u.login as username, p.descricao as authority from usuario u join usuario_perfil up on u.login = up.login join perfil p on up.id_perfil = p.id_perfil where u.login = ?" />
    </beans:bean>
   
    <beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <beans:property name="url" value="jdbc:hsqldb:hsql://localhost" />
        <beans:property name="driverClassName" value="org.hsqldb.jdbcDriver" />
        <beans:property name="username" value="sa" />
        <beans:property name="password" value="" />
    </beans:bean>
   
    <beans:bean class="br.com.jm.security.IncorrectPasswordEventListener">
        <beans:property name="dataSource" ref="dataSource" />
    </beans:bean>
   
    <beans:bean class="org.springframework.security.event.authorization.LoggerListener" />
   
    <beans:bean class="org.springframework.security.event.authentication.LoggerListener" />
   
</beans:beans>


Mas vc tem razão ao falar que temos uma certa dependência do core do Spring.
O Spring Security depende de alguns dos JARs do Spring Framework “core”. Porém, não é necessário que sua aplicação seja construída com o modelo de programação do Spring Framework. Ou seja, uma aplicação pré-existente que não usa Spring pode passar a utilizar o Spring Security sem grandes modificações.


att Davi
Responder

20/05/2011

Anthony Accioly


 Mas vc tem razão ao falar que temos uma certa dependência do core do Spring.
O Spring Security depende de alguns dos JARs do Spring Framework
“core”. Porém, não é necessário que sua aplicação seja construída com o
modelo de programação do Spring Framework. Ou seja, uma aplicação pré-existente
que não usa Spring pode passar a utilizar o Spring Security sem grandes modificações.


 
 

Concordo. Warning, tópico avançado, e que a equipe da Acegi recomenda como contra-produtivo. O artigo lá em cima fala que dá para fazer uma espécie de Mock da classe ApplicationContext para remover dependências ao Core. Eu estou procurando como fazer isso para e amarrar o Spring Security diretamente ao Guice. Não carregar um segundo container IoC à toa seria uma justificativa plausível para o caso de uso (ou seja, fazer Mock da dependência do Core ou adaptá-lo para trabalhar com outro container IoC tipo Guice ou PicoContainer). O Spring Security é tão bom que vale o esforço para portá-lo se for necessário. Bom, quem sabe a Oracle não puxa umas idéias do Spring Security para uma próxima especificação do JAAS, ou até mesmo abre uma JSR à parte. Acho que isso viria a calhar para muita gente.
Responder

20/05/2011

Davi Costa

Cara, saiu uma versão nova a pouco tempo do Spring Security,
dá uma olhada para ver se os cars não pensaram nisso. Para ser honesto li um pouco só dessa versão nova, mas não sei se atende essa necessidade.
obg abcs


Att Davi
Responder

25/05/2011

Dyego Carmo

Com certeza voce acaba usando o spring por baixo dos panos ,

mas nao esquenta , no final voce *sempre* usa um monte coisa por baixo dos panos !

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar