2012-05-01 23 views
0

我試圖通過X.509智能卡對我的應用程序進行身份驗證。目前,我的應用程序沒有任何用戶定義,所以我試圖使用匿名身份驗證。一旦我創建用戶,我會將它切換到hasRole()。無法使用X.509證書和匿名用戶配置Spring Security

<security:authentication-manager alias="authenticationManager"> 
    <security:authentication-provider user-service-ref="myUserService" /> 
</security:authentication-manager> 

<!-- TODO: Enable this once I am ready to start annotating the service interfaces --> 
<security:global-method-security pre-post-annotations="enabled" /> 

<security:http use-expressions="true" authentication-manager-ref="authenticationManager" access-denied-page="/index2.xhtml" > 
    <security:anonymous enabled="true" /> 
    <security:x509 subject-principal-regex="CN=(.*?)," user-service-ref="myUserService" /> 
    <security:intercept-url pattern="/**" access="isAnonymous()" requires-channel="https" /> 
    <!-- TODO: configure invalid-session-url, delete sessionid --> 
    <security:session-management> 
     <security:concurrency-control max-sessions="2" error-if-maximum-exceeded="true"/> 
    </security:session-management> 
</security:http> 

<bean id="roleVoter" 
    class="org.springframework.security.access.vote.RoleHierarchyVoter"> 
    <constructor-arg ref="roleHierarchy" /> 
</bean> 

<bean id="roleHierarchy" 
    class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl"> 
    <property name="hierarchy"> 
     <value> 
      ROLE_USER > ROLE_AUTHENTICATED 
      ROLE_AUTHENTICATED > ROLE_UNAUTHENTICATED 
      ROLE_UNAUTHENTICATED > ROLE_ANONYMOUS 
     </value> 
    </property> 
</bean> 

它似乎陷入了無限循環問題,我認爲我避免使用isAnonymous()。

我可能正在犯一個愚蠢的錯誤,所以如果有人能指出這種愚蠢,我會很感激。

+0

只是一個猜測:嘗試更改requires-channel =「https」來require-channel =「any」 – Ritesh

回答

1

這個問題是在web.xml中配置FacesServlet的問題。 FacesServlet映射到一個路徑,這似乎與爲Spring Security定義的攔截url不兼容。

我們已經拋棄了JSF(並且很好的剔除)。