Использование Tomcat NTLM с Spring Security - PullRequest
0 голосов
/ 24 сентября 2010

Я использую Spring Security 2 с Spring MVC. Контейнер tomcat, который я буду использовать, уже имеет поддержку NTLM и предоставит доступ только аутентифицированным пользователям, прежде чем перенаправлять их имя пользователя в заголовок запроса.

Я попытался написать пользовательский AutenticationEntryPoint с идеей, что вход в систему через форму / http не требуется, поскольку заголовок запроса уже будет содержать идентификаторы пользователя. Но до сих пор я не нашел средств для достижения этого.

Любые идеи и предложения будут высоко оценены.

Спасибо.

Ответы [ 2 ]

1 голос
/ 05 октября 2010

Я на самом деле обнаружил, что Spring security имеет встроенную поддержку безопасности с предварительной аутентификацией. В частности, я посмотрел на org.springframework.security.ui.preauth.AbstractPreAuthenticatedProcessingFilter, который поставляется с рядом реализаций, из которых RequestHeaderPreAuthenticatedProcessingFilter показался наиболее полезным. В качестве альтернативы можно также написать собственный фильтр, расширив AbstractPreAuthenticatedProcessingFilter. После того, как это будет сделано, вам также потребуется определить пользовательскую точку входа в контексте приложения, а также другие зависимости, требуемые Spring Security. Я извиняюсь, что спешу и не успеваю правильно отформатировать. Надеюсь, это поможет.

<bean id="customEntryPoint"
    class="org.springframework.security.ui.preauth.PreAuthenticatedProcessingFilterEntryPoint" />

и это

<bean id="preauthAuthProvider"
        class="org.springframework.security.providers.preauth.PreAuthenticatedAuthenticationProvider">
    <security:custom-authentication-provider />
    <property name="preAuthenticatedUserDetailsService">
        <bean id="userDetailsServiceWrapper"
                class="org.springframework.security.userdetails.UserDetailsByNameServiceWrapper">
            <property name="userDetailsService" ref="userDetailsService" />
        </bean>
    </property>
</bean>

и это

<bean id="userDetailsService" class="yourimplementation.CustomUserDetailsService" />

и это

<security:http auto-config="false"
        access-decision-manager-ref="accessDecisionManager"
        entry-point-ref="customEntryPoint">
    <security:intercept-url pattern="/*" access="permitAll" />
</security:http>
<security:authentication-manager alias="authenticationManager" />
1 голос
/ 01 октября 2010

Посмотрите на Вафля .Возможно, Вафля сама по себе не то, что вам нужно, но у нее есть реализация фильтра безопасности Spring, которая находится на приемном конце того, чего вы пытаетесь достичь.

...