Quindin
Outubro 19, 2011, 9:28am
#1
Bom dia Gujeiros
Estou com um problema na minha aplicação JSF
Não estou conseguindo fazer o uso das taglibs do spring-security dentro do jsf
Ja add os jars necessários mas nada funciona…
coloquei o xmlns:sec="http://www.springframework.org/security/tags"
ele reconhece as tags, mas elas não funcionam.
Alguém já chegou a utilizar as libs no JSF?
Aqui na empresa temos um projeto em VRaptor e usamos as taglibs do spring-security de boa, mas já no JSF não funciona nem a pal…
Qualquer ajuda já agradeço xD
Charles
Outubro 19, 2011, 10:20am
#2
Boa tarde.
Cara, os .jars do SpringSecurity estão no classpath da aplicação(no servidor)?
Meu security.xml tá assim e funfa corretamente:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans
xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd"
>
<http use-expressions="true" entry-point-ref="forbiddenAuthEntryPoint">
<intercept-url pattern="/**" access="permitAll" requires-channel="https"/>
<x509 subject-principal-regex=":(\d*?),"/>
<port-mappings>
<port-mapping http="8080" https="8443"/>
</port-mappings>
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref='userDetailsService'/>
</authentication-manager>
</beans:beans>
[]'s
t++
Quindin
Outubro 19, 2011, 1:31pm
#3
Cara aqui esta meu appContext-Security e não esta muito diferente do seu…
Quais os passos que você deu para implementar as tags?
e os jars estão sim no classpath da app
[code]<?xml version="1.0" encoding="UTF-8"?>
<sec:http auto-config="true" use-expressions="true">
<sec:form-login login-page="/home.cm"
authentication-failure-url="/home.cm?login_error=1" default-target-url="/home.cm"
authentication-success-handler-ref="forwardFilter"/>
<sec:logout logout-success-url="http://localhost:8080/PortalCM" logout-url="/j_spring_security_logout" />
</sec:http>
<sec:authentication-manager alias="authenticationManager">
<sec:authentication-provider user-service-ref="usuarioService">
<sec:password-encoder hash="md5" />
</sec:authentication-provider>
</sec:authentication-manager>
<bean id="forwardFilter" class="br.com.portal.filter.FowardingFilter">
<property name="revendaViewService" ref="revendaViewService"></property>
<property name="usuarioService" ref="usuarioService" ></property>
</bean>
[/code]
Charles
Outubro 20, 2011, 8:56am
#4
Bom dia Quindin…
Vc tinha dito q esta com problema nas tags do SpringSecurity mas qual é msg de erro msm?
Ñ entendi a pergunta:
Desculpe-me a demora nas respostas, tô meio enrolado esses dias… :lol:
[]'s
t++
Quindin
Outubro 20, 2011, 9:17am
#5
Cara seguinte:
Não dá nenhuma menssagem de erro.
Simplesmente é como se as tag não existissem kkk
se eu colocar [code]<sec:authorize acess="hasRole(‘ROLE_QUALQUERCOISA’)>
So exibe se tiver a role citada acima
[/code]
vai dar na mesma coisa que eu solocar somente [code]
So exibe se tiver a role citada acima
[/code]
é como se ele não reconhecesse ou algo do tipo
Charles
Outubro 20, 2011, 10:54am
#6
Boa tarde Quindin.
No teu web.xml vc configurou corretamente os filtros do SpringSecurity?
O seu security.xml está corretamente referenciando no web.xml?
Vc tem algo parecido com:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/base.xml
/WEB-INF/security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<filter>
<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>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
[]'s
t++
Quindin
Outubro 20, 2011, 3:55pm
#7
a única diferença do web.xml é essa:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext*.xml
</param-value>
</context-param>
onde eu tenho os arquivos
applicationContext-security.xml
applicationContext.xml
applicationContext-cfx.xml
applicationContext-services.xml
Charles
Outubro 21, 2011, 8:17am
#8
E ai Quindin, resolveu?
Señ, teste o seguinte código no teu security.xml para testar:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:sec="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">
<sec:http auto-config="true" use-expressions="true">
<sec:intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
</sec:http>
<sec:authentication-manager alias="authenticationManager">
<sec:authentication-provider>
<sec:user-service>
<sec:user authorities="ROLE_USER" name="guest" password="guest" />
</sec:user-service>
</sec:authentication-provider>
</sec:authentication-manager>
</beans>
Aq testei e funcionou, se vc ñ conseguir logar com o usário: guest e senha:guest certamente vc tem algum problema no seu redirecionamento ("/home.cm") ou na própria página de login.
Como vc ñ tem acesso a página de login personalizada provavelmente o problema ñ será em teu bean autenticador “usuarioService” ou no teu forwardFilter.
Posta ai o web.xml para vermos se ainda tiver problema.
Boa sorte.
[]'s
t++
Quindin
Outubro 21, 2011, 9:45am
#9
aqui os trexos do web.xml que configuro o spring e o security
[code]
contextConfigLocation
/WEB-INF/applicationContext*.xml
Listener responsável por iniciar o container do Spring
org.springframework.web.context.ContextLoaderListener
Listener necessário para a definição de beans em escopos como
request e session através do Spring
org.springframework.web.context.request.RequestContextListener
OpenEntityManagerInViewFilter
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
OpenEntityManagerInViewFilter
/*
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
FORWARD
REQUEST
[/code]
e sim o spring security esta funcionando, o que não funciona são as taglibs…
Ja tentei tambem criando um xml de configuração das tags e declarando o xml no web.xml
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/springsecurity.taglib.xml</param-value>
</context-param>
Mas tambem não deu nada
b_m_a_
Novembro 9, 2011, 12:59pm
#10
E ai galera beleza?
Alguém pode me indicar um livro ou um site que expliquem o funcionamento do spring do zero mesmo?
Eu tentei usar o spring e o spring security mas não estou entendo o significado das tags, então queria algo que explicasse a base para que eu possa andar sozinho.
valeu.
Eae quindin, conseguiu cara?
estou com o mesmo problema só que quando adiciono :
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/springsecurity.taglib.xml</param-value>
</context-param>
Meu projeto da erro no deployment, não faço nem ideia ao que se refere esse erro…
segue meus xmls:
//applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:b="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/index.jsf" access="hasRole('ROLE_USER')"/>
<form-login login-page="/login.jsf" authentication-failure-url="/login.jsf?erro=true"/>
</http>
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT username, password, enable FROM usuario WHERE username=?"
authorities-by-username-query="SELECT Usuario_username as username, autorizacoes_nome as authority FROM usuario_autorizacao WHERE Usuario_username=?"
/>
</authentication-provider>
</authentication-manager>
<b:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<b:property name="url" value="jdbc:postgresql://localhost:5432/Usuario" />
<b:property name="driverClassName" value="org.postgresql.Driver" />
<b:property name="username" value="postgres" />
<b:property name="password" value="123456" />
</b:bean>
</b:beans>
//springsecurity.taglib.xml
<?xml version="1.0"?>
<!DOCTYPE facelet-taglib PUBLIC
"-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
"http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
<facelet-taglib>
<namespace>http://www.springframework.org/security/tags</namespace>
<tag>
<tag-name>authorize</tag-name>
<handler-class>org.springframework.faces.security.FaceletsAuthorizeTagHandler</handler-class>
</tag>
<function>
<function-name>areAllGranted</function-name>
<function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class>
<function-signature>boolean areAllGranted(java.lang.String)</function-signature>
</function>
<function>
<function-name>areAnyGranted</function-name>
<function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class>
<function-signature>boolean areAnyGranted(java.lang.String)</function-signature>
</function>
<function>
<function-name>areNotGranted</function-name>
<function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class>
<function-signature>boolean areNotGranted(java.lang.String)</function-signature>
</function>
<function>
<function-name>isAllowed</function-name>
<function-class>org.springframework.faces.security.FaceletsAuthorizeTagUtils</function-class>
<function-signature>boolean isAllowed(java.lang.String, java.lang.String)</function-signature>
</function>
</facelet-taglib>
//web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<context-param>
<param-name>primefaces.skin</param-name>
<param-value>none</param-value>
</context-param>
<!-- Início das configurações para o Spring Security 3 -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Fim das configuração para utilizar o Spring Security 3 -->
</web-app>
da esse erro:
/composicao.xhtml @12 ,85 rendered="#{sec:areAnyGranted(‘ROLE_ADMIN’)}" Function ‘sec:areAnyGranted’ not found
Me da uma luz ae pq ta foda, ja to a mais de semana em cima desse problema e nada!
Abraço
Estou aprendendo a usar o spring security agora e não estou conseguindo fazer funcionar a taglib de forma alguma.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
template="./../newTemplate.xhtml"
xmlns:sec="http://www.springframework.org/security/tags">
<ui:define name="content">
<p>Qualquer um vê essa frase</p>
<sec:authorize ifAllGranted="ROLE_ADM">
<p>Somente ADM vê essa frase</p>
</sec:authorize>
</ui:define>
</ui:composition>
Não faz a minima diferenca eu colocar a tag do spring.
Alguem aí já usou essa taglib?
Pessoal, acredito que já devem ter resolvido o problema. Mas só pra deixar a configuração para quem precisar, eu consegui resolver seguindo o link:
http://dominikdorn.com/facelets/
Adicione estes JARs: (facelets-taglib-0.3_jsf-2.0_spring-3.jar e taglib-core-0.4.jar) na pasta lib do seu projeto.
Fiz isso e deu certo.