2013-08-03 7 views
1

인증이 Guvnor 5.4.0.Final의 tomcat-7.0.42에서 작동하도록하는 데 문제가 있습니다. 나는 seam - secure 3.1.0.fininal을 seam - security로 바 꾸었습니다. 3.2.0. 최종./beans.xml 환경Guvnor 5.x에서 게스트 사용자를 비활성화 하시겠습니까?

<security:IdentityImpl> 
    <s:modifies/> 
    <security:authenticatorName>jaasAuthenticator</security:authenticatorName> 
    </security:IdentityImpl> 

    <security:jaas.JaasAuthenticator> 
     <s:modifies/> 
     <security:jaasConfigName>drools-guvnor</security:jaasConfigName> 
    </security:jaas.JaasAuthenticator> 

jaas.config

drools-guvnor { 
    com.ndipiazza.JaasGuvnor required debug=true; 
}; 

이보기

우두머리/WEB-INF : 여기

내가 기본 인증을 설정하는의 XML 조각입니다 Guvnor JAAS 로그인 용 ZIP 파일 : https://community.jboss.org/servlet/JiveServlet/download/831268-105978/guvnor-jaas.zip

역할 기반 권한. 게스트 사용자가없는 한 모두 같은 역할을하는 것이 좋습니다.

하지만이 구성을 사용하고 우두머리에 갈 때, 나는 이미 오신 것을 환영합니다 로그인있어 참조 : 손님 나는 그것이 양식 기반 로그인에 가고 싶다

를 [어]. 이것을 어떻게 설정할 수 있습니까? 내가 놓친 게 있니?

나는이와 역할 기반 권한을 사용

:

<guvnorSecurity:RoleBasedPermissionResolver> 
    <s:modifies/> 
    <guvnorSecurity:enableRoleBasedAuthorization>true</guvnorSecurity:enableRoleBasedAuthorization> 
    </guvnorSecurity:RoleBasedPermissionResolver> 

나는이 오류 메시지를 (. 401이 사용자는 사용 권한 설정이 없습니다) 얻을. 그리고 아래의 스택 추적은 다음과 같습니다 :

INFO 03-08 12:53:23,517 (LoggingHelper.java:info:56) 
Service method 'public 

abstract org.drools.guvnor.client.rpc.UserSecurityContext org.drools.guvnor.clie 
nt.rpc.SecurityService.getCurrentUser()' threw an unexpected exception: org.jbos 
s.seam.security.AuthorizationException: This user has no permissions setup. 
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstr 
act org.drools.guvnor.client.rpc.UserSecurityContext org.drools.guvnor.client.rp 
c.SecurityService.getCurrentUser()' threw an unexpected exception: org.jboss.sea 
m.security.AuthorizationException: This user has no permissions setup. 


at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java: 

385) 


at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:5 

88) 


at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(Remot 

eServiceServlet.java:208) 


at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(Remot 

eServiceServlet.java:248) 


at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(Ab 

stractRemoteServiceServlet.java:62) 


at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 


at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 


at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 

icationFilterChain.java:305) 


at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 

ilterChain.java:210) 


at org.jboss.solder.servlet.exception.CatchExceptionFilter.doFilter(Catc 

hExceptionFilter.java:65) 


at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 

icationFilterChain.java:243) 


at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 

ilterChain.java:210) 


at org.jboss.solder.servlet.event.ServletEventBridgeFilter.doFilter(Serv 

letEventBridgeFilter.java:74) 


at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl 

icationFilterChain.java:243) 


at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF 

ilterChain.java:210) 


at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV 

alve.java:222) 


at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV 

alve.java:123) 


at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica 

torBase.java:502) 


at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j 

ava:171) 


at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j 

ava:99) 


at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java: 

953) 


at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal 

ve.java:118) 


at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav 

a:408) 


at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp 

11Processor.java:1023) 


at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(

AbstractProtocol.java:589) 


at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoin 

t.java:1852) 


at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 

java:1145) 


at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 

.java:615) 


at java.lang.Thread.run(Thread.java:722) 

Caused by: org.jboss.seam.security.AuthorizationException: This user has no perm 
issions setup. 


at org.drools.guvnor.server.security.SecurityServiceImpl.getUserCapabili 

ties(SecurityServiceImpl.java:128) 


at org.drools.guvnor.server.security.SecurityServiceImpl.getCurrentUser(

SecurityServiceImpl.java:101) 


at org.drools.guvnor.server.security.SecurityServiceImpl$Proxy$_$$_WeldC 

lientProxy.getCurrentUser(SecurityServiceImpl$Proxy$_$$_WeldClientProxy.java) 


at org.drools.guvnor.server.SecurityServiceServlet.getCurrentUser(Securi 

tyServiceServlet.java:74) 


at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 


at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 

java:57) 


at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 

sorImpl.java:43) 


at java.lang.reflect.Method.invoke(Method.java:601) 


at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:5 

69) 


... 27 more 

사용자 ID가 "guest"인 것을 볼 수 있습니다.

로그인 화면을 볼 수 있도록 어떤 단계가 빠져 있습니까?

이 티켓

는 제이보스 커뮤니티에서 열려 : https://community.jboss.org/message/831268#831268

+0

그래도 도움이 필요합니까? 그렇다면 어떤 JBoss 버전을 사용하고 있습니까? 그리고 조심해, Guvnor 5.5 로그인에 약간의 문제가있다 –

+0

그래, 나는 포기했다. 모든 문제와 마찬가지로 나는 다른 문제를 해결할 것이라고 생각합니다. –

+0

그와 관련이 있습니다. 어쨌든, 여전히 로그인 페이지가 필요하다면, LDAP를 통해 사용자를 인증하고이를 실행해야합니다. –

답변

1

이 솔루션은 톰캣 테스트하지만, 보스 7.1.1로하지 않았다. 거기에 큰 차이는, 그러나 어쨌든 여기 간다 확실하지 경우 :

첫째로, 당신은 standalone.xml의 새로운 보안 도메인 만들 수 있습니다

 <security-domain name="your-security-domain-name" cache-type="default"> 
      <authentication> 
       <login-module code="LdapExtended" flag="required"> 
        <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/> 
        <module-option name="java.naming.provider.url" value="your LDAP url/> 
        <module-option name="baseCtxDN" value="ou=your_OU,dc=yourDC,dc=com"/> 
        <module-option name="baseFilter" value="(uid={0})"/> 
        <module-option name="rolesCtxDN" value="ou=your_Roles_OU, dc=yourDC,dc=com"/> 
        <module-option name="roleFilter" value="(member={1})"/> 
        <module-option name="roleAttributeID" value="cn"/> 
        <module-option name="throwValidateError" value="true"/> 
        <module-option name="searchScope" value="ONELEVEL_SCOPE"/> 
       </login-module> 
      </authentication> 
     </security-domain> 

다음의 guvnor.war의 beans.xml 환경을 구성 사실

<guvnorSecurity:enableRoleBasedAuthorization>false</guvnorSecurity:enableRoleBasedAuthorization>

01 여기이 줄을 설정하기 전에

(...) 
<security:IdentityImpl> <s:modifies/> 
    <!-- JAAS based authentication --> 
     <security:authenticatorName>jaasAuthenticator</security:authenticatorName> 
</security:IdentityImpl> 
<security:jaas.JaasAuthenticator> 
<s:modifies/> 
    <security:jaasConfigName>your-security-domain-name</security:jaasConfigName> 
</security:jaas.JaasAuthenticator> 
<!-- SECURITY AUTHORIZATION CONFIGURATION --> <!-- This is used to enable or disable role-based authorization. By default it is disabled. -->  
<guvnorSecurity:RoleBasedPermissionResolver> 
    <s:modifies/> 
    <guvnorSecurity:enableRoleBasedAuthorization>false</guvnorSecurity:enableRoleBasedAuthorization> 
</guvnorSecurity:RoleBasedPermissionResolver> 

    <weld:scan> 
    <!-- Disable the seam-security by drools rules 
    <weld:exclude name="org.jboss.seam.security.permission.RuleBasedPermissionResolver"/>--> 
    <!-- TODO remove me when GUVNOR-1196 is fixed --> 
    <weld:exclude name="org.drools.guvnor.gwtutil.**"/> 
    <weld:exclude name="org.drools.guvnor.client.**"/> 
    </weld:scan> 


</beans> 

: JAAS를 사용하는 파일

역할없이 먼저 로그인해야 사용자를 자신의 권한에 매핑 할 수 있습니다. 적어도 한 명의 사용자에게 관리자 권한을 부여하면 전혀 로그인 할 수 없습니다.

또한 WEB-INF/lib의 seam-security jars를 버전 3.1에서 3.2로 업데이트하는 것을 잊지 마십시오. 이것은 매우 중요하거나 로그인이 작동하지 않습니다.

이 솔루션은 사용자 로그인을 Guvnor의 LDAP 서버에서 인증하기 위해 아무런 문제없이 로그인했습니다. 더 이상 문제가 있으면 알려주세요.

라파엘