2016-07-28 7 views
0

Wir verwenden Spring Security 4.x und ich möchte BasicAuthenticationFilter überschreiben. Leider konnte ich nicht finden, wie der Klassenname für das BasicAuthenticationFilter noch in dem http Element weder in dem http-basic Element der Schemakonfiguration konfiguriert wird.Wie BasicAuthenticationFilter mithilfe der Schemakonfiguration überschreiben?

Wie überschreibt man BasicAuthenticationFilter mithilfe der Schema-Konfiguration?

Ich habe versucht, BasicAuthenticationFilter mit dem benutzerdefinierten Filter ohne Erfolg überschreiben - das Schema weiterhin den Standard BasicAuthenticationFilter zu erstellen.

Added

Sehr seltsam. Ich konfigurierte auto-config="false, aber ich kann immer noch die Erstellung des Standards BasicAuthenticationFilter sehen.

Es sollte nicht nach der Dokumentation erstellt werden http://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#nsa-http

Added

Die Konfiguration w/o Bohnen Definitionen

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:sec="http://www.springframework.org/schema/security" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:oxm="http://www.springframework.org/schema/oxm" 
    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"> 


    <sec:global-method-security pre-post-annotations="enabled"> 
     <!-- AspectJ pointcut expression that locates our "post" method and applies security that way 
     <protect-pointcut expression="execution(* bigbank.*Service.post*(..))" access="ROLE_TELLER"/> 
     --> 
    </sec:global-method-security> 

    <sec:http use-expressions="true" auto-config="true" pattern="/api/**" disable-url-rewriting="false" entry-point-ref="authenticationEntryPoint"> 
     <sec:custom-filter ref="rememberUrlFilter" before="BASIC_AUTH_FILTER"/> 
     <sec:custom-filter position="PRE_AUTH_FILTER" ref="ssoFilter" /> 

     <sec:intercept-url pattern="/api/**" access="isAuthenticated()" /> 
     <sec:intercept-url pattern="/**" access="isAuthenticated()"/> 
     <sec:logout logout-url="/logout.faces" success-handler-ref="logoutSuccessHandlerImpl" /> 
     <sec:http-basic entry-point-ref="authenticationEntryPoint"/> 
     <sec:csrf disabled="true"/> 
     <sec:headers disabled="true"/> 
     <!--<sec:custom-filter ref="basicAuthenticationFilter" after="BASIC_AUTH_FILTER"/>--> 

     <sec:custom-filter ref="localhostIntegrationFilter" after="ANONYMOUS_FILTER"/> 
     <sec:access-denied-handler ref="accessDeniedHandler"/> 
    </sec:http> 

    <bean class="org.primefaces.webapp.filter.FileUploadFilter" name="fileUploadFilter"/> 

    <sec:http use-expressions="true" auto-config="true" disable-url-rewriting="false"> 
     <sec:custom-filter ref="fileUploadFilter" before="FIRST"/> 
     <sec:custom-filter ref="rememberUrlFilter" before="BASIC_AUTH_FILTER"/> 
     <sec:custom-filter position="PRE_AUTH_FILTER" ref="ssoFilter" /> 

     <sec:intercept-url pattern="/pages/**" access="isAuthenticated()" /> 
     <sec:intercept-url pattern="/login.faces" access="isAnonymous()"/> 
     <sec:intercept-url pattern="/js/**" access="permitAll"/> 
     <sec:intercept-url pattern="/css/**" access="permitAll"/> 
     <sec:intercept-url pattern="/images/**" access="permitAll"/> 
     <sec:intercept-url pattern="/img/**" access="permitAll" /> 
     <sec:intercept-url pattern="/**" access="isAuthenticated()"/> 

     <sec:csrf disabled="true"/> 
     <sec:headers disabled="true"/> 

     <sec:form-login login-page="/login.faces" 
         login-processing-url="/j_spring_security_check" 
         authentication-failure-url="/login.faces" 
         default-target-url="/pages/defaultPage.faces" 
         username-parameter="j_username" 
         password-parameter="j_password" 
         authentication-failure-handler-ref="authenticationFailureHandler" 
     /> 

     <sec:logout logout-url="/logout.faces" 
        success-handler-ref="logoutSuccessHandlerImpl" 
       /> 

     <sec:custom-filter ref="localhostIntegrationFilter" after="ANONYMOUS_FILTER"/> 
     <sec:access-denied-handler ref="accessDeniedHandler"/> 
    </sec:http> 

... 

</beans> 
+0

Teilen Sie Ihre Feder xml – 6ton

+0

Ich habe die Konfigurationen ohne Bohnen Definitionen – Michael

Antwort

1

Gemäß der Schema-Dokumentation in der xsd wenn Sie möchten, Um einen Filter zu ersetzen, müssen Sie das Positions-Tag verwenden:

<sec:custom-filter ref="customBasicAuth" position="BASIC_AUTH_FILTER"/> 

Auch wenn Sie das Element <sec:http-basic einschließen, wird der Standard-Basisauthentifizierungsfilter zur Filterkette hinzugefügt.

Die auto-config ist ein Vermächtnis Attribut und kann (keine Notwendigkeit, es zu auf false gesetzt) ​​entfernt werden

+0

Dank hinzugefügt, entfernen Sie die 'Auto-config 'hat die Arbeit gemacht! Weißt du, was ich zusätzlich hinzufügen sollte, wenn ich die 'auto-config' auf false (durch Entfernen) setze? Ich brauche kein 'form-login' im aktuellen Element und ich habe' logout'. Was kann ich hinzufügen, um in der gleichen Funktionalität wie 'auto-config = true' zu ​​sein? Nicht sicher hier die vollständige Antwort: http://stackoverflow.com/questions/18609655/what-is-the-use-of-auto-config-true-in-spring-security – Michael

+0

Die verknüpfte Antwort ist korrekt. Das selbe wird in der xsd über auto-config erwähnt "Ein Legacy-Attribut, das automatisch ein Login-Formular, eine BASIC-Authentifizierung und eine Abmelde-URL und Abmeldedienste registriert." Logout-Dienste sind in diesem Fall die Filter, die die Abmeldung übernehmen. – 6ton

+0

Danke, deine Hilfe ist eine Prämie wert :) – Michael