zoukankan      html  css  js  c++  java
  • 使用Spring Security的Basic Auth认证后Postman的POST请求不成功的可能原因

      今天在用Postman测试接口,没上Spring Security之前,GET类和POST类的接口都测试的好好!

      接着在pom.xml添加的Security依赖:

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
            </dependency>

      并在application.yml中添加的Security配置:

      security:
        user:
          name: user
          password: pwd123

      通过以上配置使用上Spring Security后,GET类和POST类的接口都报未授权:

      这个好理解:因为Security默认启用了Basic Auth授权,接着我就在Postman的Authorization页签中设置Basic Auth授权基本信息:

      填好授权信息后,清理Cookie再次请求,GET类请求一切正常:

      然而,清理Cookie再次请求,POST类请求却依旧不行:

      首先,接口本身肯定是没问题的,因为上Spring Security之前一切都挺好!其次,Spring Security本身肯定也是正常工作的,因为Postman中没有进行授权前GET类的POST类的请求都不行!现在GET类的行了,POST类的却不行~,那么这两类请求肯定有不一样的地方,让Spring Security进行了拦截!

      捣鼓了大半天,最后发现是Spring Security会对POST、PUT、PATCH等数据提交类的请求进行CSRF验证(防止跨站请求伪造攻击),Spring Security要求这些请求必须携带CSRFToken,但是目前Postman并不会利用Authorization页签中填上的Basic Auth相关信息生成CSRFToken。你得用自己的登录接口来生成,并将生成的CSRFToken添加到Postman后续的各个测试请求的Headers中(X-CSRFToken)。

      既然知道了原因,我们为了测试方便,我就不使用登录接口拿CSRFToken,而是暂时将Spring Security的CSRF验证关掉即可(交付测试和上生产时记得重新打开),添加Web安装配置类继承WebSecurityConfigurerAdapter适配器类,并重写configure(HttpSecurity http)方法即可:

    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    
    @Configuration
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().anyRequest().authenticated().and().httpBasic().and().csrf().disable();
        }
    }

      重新运行应用,清理Cookie再次请求,POST类请求也可以了:

  • 相关阅读:
    分布式数据库数据一致性的原理、与技术实现方案
    分布式系统全局唯一ID简介、特点、5种生成方式
    分布式Session共享的4类技术方案,与优劣势比较
    深入理解分布式事务
    分布式事务的解决方案,以及原理、总结
    调研 | 5种分布式事务解决方案优缺点对比
    网页大文件上传支持断点上传
    WEB大文件上传支持断点上传
    http大文件上传支持断点上传
    B/S大文件上传支持断点上传
  • 原文地址:https://www.cnblogs.com/xuruiming/p/13296312.html
Copyright © 2011-2022 走看看