【问题标题】:Spring MVC 4 Global Basic HTTP AuthenticationSpring MVC 4 全局基本 HTTP 身份验证
【发布时间】:2015-09-06 21:31:46
【问题描述】:

我需要为临时服务器设置全局基本 HTTP 身份验证。没有什么花哨。我只想要求用户名/密码来访问任何东西。我也想只使用 Java 配置。我尝试了很多不同的解决方案,但没有一个有效。我总是能够访问服务器上的所有资源。这就是我现在正在做的事情:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

   @Override
   protected void configure(HttpSecurity http) throws Exception {
    System.out.println("Configuring HttpSecurity");

    http
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .httpBasic();
   }

   @Autowired
   public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    System.out.println("Configuring global AuthenticationManagerBuilder");

    auth
            .inMemoryAuthentication()
            .withUser("user").password("password").roles("USER");
   }
}

我可以在日志中看到这些 sn-ps 正在执行。如您所见,在第一种方法中,我要求所有请求都经过身份验证。在第二种方法中,我在内存中指定了身份验证。

【问题讨论】:

  • 您遇到的错误是什么?以及您是如何尝试登录的?需要更多有关问题的信息
  • 没有错误。问题是没有提示我执行基本的 HTTP 身份验证。每当请求任何资源时,我都希望始终要求基本的 HTTP 身份验证。

标签: spring-mvc spring-security basic-authentication spring-java-config spring-4


【解决方案1】:

由于@Configuration(这又不是必需的,因为它也由@EnableWebSecurity 声明),您的SOP 语句正在打印(在容器实例化时)。如果您希望将它与应用程序过滤器链一起使用,您仍然需要在扩展 WebMvcConfigurerAdapter 或实现 WebApplicationInitializer 的 web.xml 或 MVC 初始化程序类中注册 spring 安全过滤器链。例如(java config 与您正在寻找的相同):

EnumSet<DispatcherType> dispatcherTypes = EnumSet.of(
            DispatcherType.REQUEST, DispatcherType.ERROR);
container.addFilter("springSecurityFilterChain",
            DelegatingFilterProxy.class).addMappingForUrlPatterns(
            dispatcherTypes, false, "/*");

其中容器是 ServletContext 的一个实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2015-08-08
    • 2016-04-30
    • 2013-01-11
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    相关资源
    最近更新 更多