【问题标题】:Spring's basic security overwriting app's configurationSpring 的基本安全覆盖应用程序的配置
【发布时间】:2018-05-12 17:16:12
【问题描述】:

我有一个带有 Spring 安全性的 Spring Boot 2 应用程序,如下所示:

@SpringBootApplication(exclude = [(SecurityAutoConfiguration::class)])
class UntappdCqrsApplication

fun main(args: Array<String>) {
    runApplication<UntappdCqrsApplication>(*args)
}

和配置类

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
class TokenConfiguration(
        val jwtTokenProvider: JwtTokenProvider
) : WebSecurityConfigurerAdapter() {

    override fun configure(http: HttpSecurity) {
        http.csrf().disable();
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);

        http.authorizeRequests()
                .antMatchers("/users/signup").permitAll()
                .anyRequest().authenticated()

        http.apply(JwtTokenConfigurer(jwtTokenProvider));
    }
}

有两个端点:POST users/signup 和 GET users/test。
根据我的配置,/signup 应该不需要身份验证,而 /test 应该,但是两个端点都可以在没有任何身份验证的情况下访问。

如果我在 TokenConfiguration 类中添加 @EnableWebSecurity,Spring 现在会生成一个默认密码,并且两个端点现在都受到保护。

我想我在这里遗漏了一些东西,但我不知道是什么

【问题讨论】:

    标签: spring spring-boot spring-security


    【解决方案1】:

    您尚未为您的 JwtTokenProvider 或 JwtTokenConfigurer 类提供源或导入,但您的 JwtTokenProvider 似乎可能会引发未经检查的异常,甚至直接发送身份验证失败的响应。这将防止 permitAll() 被触发。

    查看我对类似问题的回复:

    https://stackoverflow.com/a/46086769/873590

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-07
      • 2019-12-07
      • 2019-01-02
      • 2014-11-26
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 2015-09-13
      相关资源
      最近更新 更多