【问题标题】:Spring Security in Spring BootSpring Boot 中的 Spring 安全性
【发布时间】:2015-10-19 05:52:29
【问题描述】:

我想在 Spring Boot 应用程序中实现 Spring Security。我之前使用我的 Spring 4.0 应用程序使用 JavaConfig 完成了这项工作。但是,我发现给出的示例风格存在一些差异

在我的例子中,用户已经过预认证,我们有自己的授权机制,其中包含业务活动。

在我的上一个应用程序中,我使用配置

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

这个过滤器实际上会在我的应用程序中启用 spring 安全性,这反过来会将用户令牌传递给进一步的步骤。

在 Spring Boot 参考文档中,我没有得到任何 springSecurityFilterChain/DelegatingFilterProxy 的踪迹,所以我对如何开始开发我的模块感到困惑

所以这里的问题是,我需要手动配置它吗?还是自动配置本身已经解决了这个问题?

其次,我需要在 Spring Security 中进行大量自定义,因此我不需要 Spring Boot Security 提供的功能,例如基本身份验证。在那种情况下,只需使用 @EnableWebSecurity 创建我自己的 bean 就会关闭该功能?

其他信息

4.2。安全命名空间配置入门 在本节中,我们将了解如何构建命名空间配置以使用框架的一些主要功能。假设您最初希望尽快启动并运行,并向现有 Web 应用程序添加身份验证支持和访问控制,并进行一些测试登录。然后我们将看看如何转换为针对数据库或其他安全存储库进行身份验证。在后面的部分中,我们将介绍更高级的命名空间配置选项。

4.2.1。 web.xml 配置 您需要做的第一件事是将以下过滤器声明添加到您的 web.xml 文件中:

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

这为 Spring Security Web 基础架构提供了一个挂钩。 DelegatingFilterProxy 是一个 Spring Framework 类,它委托给在应用程序上下文中定义为 Spring bean 的过滤器实现。在这种情况下,bean 被命名为“springSecurityFilterChain”,它是由命名空间创建的用于处理 Web 安全的内部基础结构 bean。请注意,您不应自己使用此 bean 名称。将其添加到 web.xml 后,您就可以开始编辑应用程序上下文文件了。使用该元素配置 Web 安全服务。

【问题讨论】:

  • 我只浏览了该文档。所以在那个链接上我没有得到任何关于 springSecurityFilterChain/DelegatingFilterProxy 的参考
  • 另外,请检查一下
  • 好的...你能指出我已经注册了springSecurityFilterChain/DelegatingFilterProxy的类吗
  • 在体验过“旧”弹簧之后,您似乎正在尝试使用弹簧靴。这将导致您尝试找到不存在的问题:) spring boot 为您做了很多。真的 - 一开始它是压倒性的,因为你觉得需要配置一些东西,但它已经完成了。有很多例子可以帮助你github.com/spring-projects/spring-boot/tree/master/…

标签: spring spring-security spring-boot


【解决方案1】:

自 Spring Security 3.2(2013 年 12 月)以来,不再需要自己配置 springSecurityFilterChain,只要您包含 spring-security-config 模块(spring-security-web 不包含),@EnableWebSecurity 注释将为您完成此操作,但 Spring Boot 会自动包含它):

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-config</artifactId>
      <version>4.2.8.RELEASE</version>
    </dependency>

WebSecurityConfiguration 配置器在@EnableWebSecurity 上激活,并委托给WebSecurity 构建器类来实际构建配置,最后用bean 名称"springSecurityFilterChain" 实例化FilterChainProxy

只需按照docs 激活和配置网络安全。例如:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.httpBasic().authorizeRequests()
            .anyRequest().hasAnyRole("USER", "ADMIN");
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser("user").password("{noop}user").roles("USER")
                .and()
                .withUser("admin").password("{noop}admin").roles("ADMIN");
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 2016-05-14
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 2016-12-01
    相关资源
    最近更新 更多