2012-05-01 17 views
0

X.509スマートカード経由でアプリケーションに認証しようとしています。今のところ、私のアプリケーションにはユーザが定義されていないので、私は匿名認証を使用しようとしています。ユーザーを作成すると、それをhasRole()に切り替えます。X.509証明書と匿名ユーザーでSpringセキュリティを設定できません

<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"をrequires-channel = "any"に変更してみてください。 – Ritesh

答えて

1

web.xmlにFacesServletを設定する際に問題が発生しました。 FacesServletが1つのパスにマップされました。これは、Spring Security用に定義されたintercept-urlと互換性がないようです。

私たちはJSFを捨ててしまいました(良いリダンダンス)。

関連する問題