2010-09-24 142 views
0

我在Spring MVC中使用Spring Security 2。我将要使用的tomcat容器已经具有NTLM支持,并且只会在请求头中转发他们的用户名之前提供对仅通过身份验证的用户的访问。与Spring Security一起使用Tomcat NTLM

我试着写一个自定义AutenticationEntryPoint的想法,没有任何形式/ HTTP的基本的登录会被要求,因为请求头就已经包含了用户ID。但到目前为止,我没有找到实现这一目标的方法。

任何意见和建议,将高度赞赏。

谢谢。

回答

1

Waffle。也许Waffle本身并不是你想要的,但它有一个弹簧安全过滤器实现,它是你尝试实现的接收端。

+0

我居然发现,春季安全具有预认证安全的原生支持。特别是,我看着org.springframework.security.ui.preauth.Abs​​tractPreAuthenticatedProcessingFilter,其自带的一些implemententations的,其中 RequestHeaderPreAuthenticatedProcessingFilter似乎是最有用的。 – Aamir 2010-10-05 13:06:08

0

我居然发现,春季安全具有预认证安全的原生支持。特别是,我看着org.springframework.security.ui.preauth.Abs​​tractPreAuthenticatedProcessingFilter,其自带的一些implemententations的,其中 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" />