Java 匹配的通配符是严格的,但找不到元素';bean';

Java 匹配的通配符是严格的,但找不到元素';bean';,java,spring,spring-security,cas,Java,Spring,Spring Security,Cas,我正试图通过配置CAS客户端,将Spring安全项目与CAS服务器集成起来进行身份验证。在将它应用到我的web应用程序之前,我在Spring安全示例项目中进行了尝试 我添加了CAS插件,如图所示,使其适应情况 当我运行或调试示例web应用程序时,我收到了标题中提到的错误,该标题引用了该行 <bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">

我正试图通过配置CAS客户端,将Spring安全项目与CAS服务器集成起来进行身份验证。在将它应用到我的web应用程序之前,我在Spring安全示例项目中进行了尝试

我添加了CAS插件,如图所示,使其适应情况

当我运行或调试示例web应用程序时,我收到了标题中提到的错误,该标题引用了该行

 <bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">

以下spring-security.xml的

 <beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

<!-- enable use-expressions -->
<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/admin**" access="hasRole('ROLE_ADMIN')" />

    <!-- access denied page -->
    <access-denied-handler error-page="/403" />
    <form-login 
        login-page="/login" 
        default-target-url="/welcome" 
        authentication-failure-url="/login?error" 
        username-parameter="username"
        password-parameter="password" />
    <logout logout-success-url="/login?logout"  />
    <!-- enable csrf protection -->
    <csrf/>
</http>

<!-- Select users and user_roles from database -->
<authentication-manager>
    <authentication-provider>
        <jdbc-user-service id="userService" data-source-ref="dataSource"
            users-by-username-query=
                "select username,password, enabled from users where username=?"
            authorities-by-username-query=
                "select username, role from user_roles where username =?  " />
    </authentication-provider>
</authentication-manager>

    <bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">
    <security:filter-chain-map path-type="ant">
        <security:filter-chain pattern="/" filters="casValidationFilter, wrappingFilter" />
        <security:filter-chain pattern="/secure/receptor" filters="casValidationFilter" />
        <security:filter-chain pattern="/j_spring_security_logout" filters="logoutFilter,etf,fsi" />
        <security:filter-chain pattern="/**" filters="casAuthenticationFilter, casValidationFilter, wrappingFilter, sif,j2eePreAuthFilter,logoutFilter,etf,fsi"/>
    </security:filter-chain-map>
</bean>
<bean id="sif" class="org.springframework.security.web.context.SecurityContextPersistenceFilter"/>
<bean id="preAuthAuthProvider" class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider">
    <property name="preAuthenticatedUserDetailsService">
        <bean id="userDetailsServiceWrapper" class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">
            <property name="userDetailsService" ref="userService"/>
        </bean>
    </property>
</bean>

<bean id="preAuthEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" />

<bean id="j2eePreAuthFilter" class="org.springframework.security.web.authentication.preauth.j2ee.J2eePreAuthenticatedProcessingFilter">
    <property name="authenticationManager" ref="authenticationManager"/>
    <property name="authenticationDetailsSource">
        <bean class="org.springframework.security.web.authentication.WebAuthenticationDetailsSource" />
    </property>
</bean>

<bean id="logoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
    <constructor-arg value="/"/>
    <constructor-arg>
        <list>
            <bean class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler"/>
        </list>
    </constructor-arg>
</bean>

<bean id="servletContext" class="org.springframework.web.context.support.ServletContextFactoryBean"/>

<bean id="etf" class="org.springframework.security.web.access.ExceptionTranslationFilter">
    <property name="authenticationEntryPoint" ref="preAuthEntryPoint"/>
</bean>

<bean id="httpRequestAccessDecisionManager" class="org.springframework.security.access.vote.AffirmativeBased">
    <property name="allowIfAllAbstainDecisions" value="false"/>
    <property name="decisionVoters">
        <list>
            <ref bean="roleVoter"/>
        </list>
    </property>
</bean>
<bean id="fsi" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
    <property name="authenticationManager" ref="authenticationManager"/>
    <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager"/>
    <property name="securityMetadataSource">
        <security:filter-invocation-definition-source>
            <security:intercept-url pattern="/**" access="ROLE_ANONYMOUS,ROLE_USER"/>
        </security:filter-invocation-definition-source>
    </property>
</bean>
<bean id="roleVoter" class="org.springframework.security.access.vote.RoleVoter"/>

<bean id="securityContextHolderAwareRequestFilter" class="org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter"/>
<bean class="org.jasig.cas.client.validation.Saml11TicketValidator" id="ticketValidator">
    <constructor-arg index="0" value={cas.login} />

    <!--<property name="proxyGrantingTicketStorage" ref="proxyGrantingTicketStorage" />-->
    <!--<property name="proxyCallbackUrl" value="http://localhost:8080/ui/" />-->
</bean>
<bean id="proxyGrantingTicketStorage" class="org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl" />
<bean id="casAuthenticationFilter" class="org.jasig.cas.client.authentication.AuthenticationFilter">
    <property name="casServerLoginUrl" value={cas.login.url} />
    <property name="serverName" value={cas.login.url} />
</bean>
<bean id="casValidationFilter" class="org.jasig.cas.client.validation.Saml11TicketValidationFilter">
    <property name="serverName" value="http://localhost:8080/ui" />
    <property name="exceptionOnValidationFailure" value="true" />
    <!--<property name="proxyGrantingTicketStorage" ref="proxyGrantingTicketStorage" />-->
    <property name="redirectAfterValidation" value="true" />
    <property name="ticketValidator" ref="ticketValidator" />
    <!--<property name="proxyReceptorUrl" value="/secure/receptor" />-->
</bean>
<bean id="wrappingFilter" class="org.jasig.cas.client.util.HttpServletRequestWrapperFilter" />

</beans:beans>


非常感谢您的帮助。

您还需要在模式位置添加XSD

xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd"

您基本上复制粘贴了所有内容,并期望它能够正常工作。您没有
安全性
前缀,因为您将其设置为根。因此,删除
安全性:
前缀,并用
bean:
作为所有bean声明的前缀。此外,您还复制了您的配置并覆盖了许多已注册的bean,我强烈建议您首先尝试了解需要什么,并将旧的(过时的?)示例修改为您的实际代码。我还强烈建议您参考指南。这非常清楚地解释了如何使用Spring Security配置客户端。非常感谢您的建议。不过,我还没能成功。我覆盖了哪些bean?关于我没有包括的安全前缀xmlns:security=“”,您是对的