2014-09-02 1 views
0

я в настоящее время возникают проблемы с настраиваемого Сиро и Hazelcast в сочетании:Hazelcast Конфигурация и Shiro

web.xml:

<filter> 
    <filter-name>shiroFilter</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    <init-param> 
     <param-name>targetFilterLifecycle</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 

<filter> 
    <filter-name>hazelcastWebFilter</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    <init-param> 
     <param-name>targetFilterLifecycle</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 
[...] 
    <filter-mapping> 
    <filter-name>shiroFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<filter-mapping> 
    <filter-name>hazelcastWebFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

applicationContext.xml:

<!-- Hazelcast configuration--> 
<hz:hazelcast id="hazelcastInstance"> 
    <hz:config> 
     <hz:instance-name>${hazelcast.instance}</hz:instance-name> 
     <hz:group name="${hazelcast.group}" password="${hazelcast.password}"/> 
     <hz:network port="${hazelcast.port}" port-auto-increment="${hazelcast.port.autoincrement}"> 
      <hz:join> 
       <hz:multicast enabled="${hazelcast.multicast.enabled}" 
           multicast-group="${hazelcast.multicast.group}" 
           multicast-port="${hazelcast.multicast.port}" 
           multicast-time-to-live="${hazelcast.multicast.timetolive}" 
           multicast-timeout-seconds="${hazelcast.multicast.timeoutseconds}"></hz:multicast> 
      </hz:join> 
     </hz:network> 
    </hz:config> 
</hz:hazelcast> 
[...] 
<bean id="hazelcastWebFilter" class="com.hazelcast.web.WebFilter" depends-on="hazelcastInstance"> 
    <constructor-arg name="properties"> 
     <props> 
      <prop key="map-name">shiro-activeSessionCache</prop> 
      <prop key="sticky-session">${hazelcast.webfilter.stickysession}</prop> 
      <prop key="instance-name">${hazelcast.instance}</prop> 
     </props> 
    </constructor-arg> 
</bean> 

<!-- Shiro --> 
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> 
    <property name="securityManager" ref="securityManager"/> 
    <property name="loginUrl" value="/s/Login.app"/> 
    <property name="successUrl" value="/goMain.app"/> 
    <property name="unauthorizedUrl" value="/unauthorized.jsp"/> 
    <property name="filters"> 
     <util:map> 
      <entry key="authc" value-ref="auth"/> 
      <entry key="authcpda" value-ref="pdaAuth"/> 
     </util:map> 
    </property> 
    <property name="filterChainDefinitions"> 
     <value> 
      HERE ARE PATHS onfigured 
     </value> 
    </property> 
</bean> 

<bean id="auth" class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter"> 
    <property name="loginUrl" value="/s/Login.app"/> 
</bean> 

<bean id="pdaAuth" class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter"> 
    <property name="loginUrl" value="/s/pda/login.app"/> 
</bean> 

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 
    <property name="realm" ref="PRODUCTRealm"/> 
    <property name="cacheManager" ref="shiroCacheManager"/> 
    <property name="sessionManager" ref="sessionManager"/> 
</bean> 

<bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO"></bean> 

<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/> 

<!--<bean id="shiroCacheManager" class="org.apache.shiro.cache.MemoryConstrainedCacheManager"/>--> 
<bean id="shiroCacheManager" class="de.logentis.Hazelcast.HazelcastCacheManager"/> 

<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> 
    <property name="sessionDAO" ref="sessionDAO"/> 
    <property name="sessionValidationSchedulerEnabled" value="false"/> 
</bean> 

<!-- Define the Shiro Realm implementation you want to use to connect to your back-end --> 
<!-- security datasource: Netversys DB --> 
<bean id="PRODUCTRealm" class="PRODUCTNAMEJdbcRealm"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="schema" value="${PRODUCTdb.schema}"/> 
</bean> 

<!-- Enable Shiro Annotations for Spring-configured beans. Only run after the lifecycleBeanProcessor has run: --> 
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" 
     depends-on="lifecycleBeanPostProcessor"/> 
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> 
    <property name="securityManager" ref="securityManager"/> 
</bean> 

HazelcastCacheManager от: https://github.com/stormpath/shiro-hazelcast-web-sample/blob/master/src/main/java/com/stormpath/samples/shiro/hazelcast/cache/HazelcastCacheManager.java

Задача 1: я не могу войти в A РИМЕНЕНИЕ. Я немедленно вышла из системы.

Проблема 2: JSESSIONID появляется как параметр запроса (?). Был определенно никогда

Проблема 3: hazelcastsession кажется потерянным, хотя Cookie существует

Задача 4: У меня есть 3 печенье: 2 JSessionID и 1 hazelcast.

Любая помощь будет оценена

ответ

1

Что касается вопросов JSessionID, которые могут вызвать 1)

я не знаю о hazelcast, но у нас были подобные проблемы с помощью Vaadin и Сиро. Когда веб-приложение использовало JSESSION в URL-адресе, все стало беспорядочным.

Что помогло нам добавляет это web.xml, говоря веб-сервер только использовать куки для отслеживания идентификатору сессии:

<session-config> 
    <cookie-config> 
     <!-- this is so we also use it for https --> 
     <http-only>false</http-only> 
    </cookie-config> 
    <tracking-mode>COOKIE</tracking-mode> 
</session-config> 
+0

»Когда WebApplication был использованием JSESSION в URL, то есть грязно. " Да. Это противно: D Что касается Hazelcast: он используется для разделения сеансов между узлами. Если вы настраиваете только Hazelcast, у вас есть фильтр, который перехватывает запросы, обертывает сеанс и дает вам прокси. То же самое касается Сиро. И почему-то они не любят друг друга. –