0

我正在尝试通过 X.509 智能卡对我的应用程序进行身份验证。目前,我的应用程序没有定义任何用户,所以我正在尝试使用匿名身份验证。创建用户后,我会将其切换为 hasRole()。

<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()。

我可能犯了一个愚蠢的错误,所以如果有人能指出所说的愚蠢,我将不胜感激。

4

1 回答 1

1

问题是在 web.xml 中配置 FacesServlet 的问题。FacesServlet 被映射到一个路径,这似乎与为 Spring Security 定义的拦截 URL 不兼容。

我们已经抛弃了 JSF(并且摆脱了)。

于 2012-05-23T12:19:04.867 回答