복붙노트

[SPRING] "일치하는 와일드 카드는 엄격하지만 'http'요소에 대한 선언을 찾을 수 없습니다."오류

SPRING

"일치하는 와일드 카드는 엄격하지만 'http'요소에 대한 선언을 찾을 수 없습니다."오류

NTLM 인증을 구성하려고하는데 오류가 발생합니다.

비슷한 오류로 많은 주제를 읽었지만 내 문제에 대한 해결책을 찾을 수 없었습니다.

오류를 발생시키는 내 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"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.springframework.org/schema/security
                            http://www.springframework.org/schema/security/spring-security.xsd" >

    <http access-denied-page="forms/error403.jsp" entry-point-ref="ntlmEntryPoint" servlet-api-provision="false"> 
        <intercept-url pattern="forms/error403.jsp" filters="none"/>
        <intercept-url pattern="forms/**" access="ROLE_GUEST,ROLE_OPERATOR,ROLE_ADMIN" />
                <custom-filter position="PRE_AUTH_FILTER"/>
    </http>

    <authentication-manager alias="mainAuthenticationManager"/>  
    <authentication-provider user-service-ref='userDetailsService' />

    <beans:bean id="userDetailsService"
        class="service.UserInfoService">
        <beans:property name="dataSource" ref="dataSource" />
        <beans:property name="usersByUsernameQuery" value="select distinct name, ' ' as password, 1 as enabled from TMP_SPRING_USERS where name=?" />
        <beans:property name="authoritiesByUsernameQuery" value="select name, role from TMP_SPRING_USERS where name=?" />
    </beans:bean>

    <beans:bean id="ntlmEntryPoint"
        class="org.springframework.security.ui.ntlm.NtlmProcessingFilterEntryPoint">
        <beans:property name="authenticationFailureUrl" value="forms/error403.html" />
    </beans:bean>

    <beans:bean id="exceptionTranslationFilter"
        class="org.springframework.security.ui.ExceptionTranslationFilter">
        <beans:property name="authenticationEntryPoint" ref="ntlmEntryPoint" />
    </beans:bean>

    <beans:bean id="ntlmFilter"
        class="org.springframework.security.ui.ntlm.NtlmProcessingFilter">
        <custom-filter position="NTLM_FILTER" />
        <beans:property name="authenticationManager" ref="mainAuthenticationManager" />
        <beans:property name="retryOnAuthFailure" value="true" />
        <beans:property name="stripDomain" value="true"/>
        <beans:property name="domainController" value="company.com" />
        <beans:property name="jcifsProperties">
            <beans:props>
                <beans:prop key="jcifs.smb.lmCompatibility">0</beans:prop> 
                <beans:prop key="jcifs.smb.client.useExtendedSecurity">false</beans:prop> 
                <beans:prop key="jcifs.smb.client.domain">COMPANY</beans:prop>
                <beans:prop key="jcifs.smb.client.username">somenycuser</beans:prop>
                <beans:prop key="jcifs.smb.client.password">AReallyLoooongRandomPassword</beans:prop>
            </beans:props> 
        </beans:property> 
    </beans:bean>


</beans:beans>

버전 3.X부터 스프링 시큐리티에는 NTLM 확장이 더 이상 포함되지 않으므로 http://aloiscochard.blogspot.com/2010/03/spring-security-ntlm-3.html 문서에서 사용합니다.

도와주세요.

해결법

  1. ==============================

    1.문제가 해결되어 spring-security-config.jar을 추가하는 것을 잊었다. 또한 일부 설정을 변경했습니다. 올바른 security.xml은 ::

    문제가 해결되어 spring-security-config.jar을 추가하는 것을 잊었다. 또한 일부 설정을 변경했습니다. 올바른 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"
            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.0.4.xsd" >
    
        <http access-denied-page="forms/error403.jsp" entry-point-ref="ntlmEntryPoint" servlet-api-provision="false"> 
                    <intercept-url pattern="/**" access="ROLE_GUEST,ROLE_OPERATOR,ROLE_ADMIN" />
                    <custom-filter position="PRE_AUTH_FILTER" ref="ntlmFilter"/>
            </http>
    
        <authentication-manager alias="mainAuthenticationManager">  
                <authentication-provider user-service-ref="userDetailsService" />
            </authentication-manager>
    
        <beans:bean id="userDetailsService"
            class="service.UserInfoService">
            <beans:property name="dataSource" ref="dataSource" />
            <beans:property name="usersByUsernameQuery" value="select distinct name, ' ' as password, 1 as enabled from TMP_SPRING_USERS where name=?" />
            <beans:property name="authoritiesByUsernameQuery" value="select name, role from TMP_SPRING_USERS where name=?" />
        </beans:bean>
    
        <beans:bean id="ntlmEntryPoint"
            class="org.springframework.security.ui.ntlm.NtlmAuthenticationFilterEntryPoint">
            <beans:property name="authenticationFailureUrl" value="forms/error403.html" />
        </beans:bean>
    
    
    
        <beans:bean id="ntlmFilter"
            class="org.springframework.security.ui.ntlm.NtlmAuthenticationFilter">
                    <beans:property name="authenticationManager" ref="mainAuthenticationManager" />
            <beans:property name="retryOnAuthFailure" value="true" />
            <beans:property name="stripDomain" value="true"/>
            <beans:property name="domainController" value="company.com" />
            <beans:property name="jcifsProperties">
                <beans:props>
                    <beans:prop key="jcifs.smb.lmCompatibility">0</beans:prop> 
                    <beans:prop key="jcifs.smb.client.useExtendedSecurity">false</beans:prop> 
                    <beans:prop key="jcifs.smb.client.domain">COMPANY</beans:prop>
                    <beans:prop key="jcifs.smb.client.username">somenycuser</beans:prop>
                    <beans:prop key="jcifs.smb.client.password">AReallyLoooongRandomPassword</beans:prop>
                </beans:props> 
            </beans:property> 
        </beans:bean>
    
    
    </beans:beans>
    
  2. from https://stackoverflow.com/questions/10561579/the-matching-wildcard-is-strict-but-no-declaration-can-be-found-for-element-h by cc-by-sa and MIT license