zoukankan      html  css  js  c++  java
  • 调试Http Basic认证,用base64加密解密

    我最新最全的文章都在 南瓜慢说 www.pkslow.com ,欢迎大家来喝茶!

    1 HTTP Basic认证

    HTTP Basic认证是在HTTP 1.0就引入的认证方案,存在安全缺陷;但由于实现简单,仍有项目在用。

    它主要通过请求头Authorization来做认证,格式为:

    键:Authorization

    值:Basic base64(username:password),即Basic 加密串,如Basic dXNlcjp1c2Vy

    Spring Security的配置可以为:

    @EnableWebFluxSecurity
    public class WebfluxSecurityConfig {
      @Bean
      public MapReactiveUserDetailsService userDetailsService() {
        UserDetails user = User.withDefaultPasswordEncoder()
          .username("user")
          .password("user")
          .roles("USER")
          .build();
        return new MapReactiveUserDetailsService(user);
      }
    
      @Bean
      public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
        http.httpBasic()
          .and()
          .authorizeExchange()
          .anyExchange().hasRole("USER")
          .and()
          .formLogin()
          .and()
          .csrf().disable();
    
        return http.build();
      }
    }
    

    2 如何加密解密

    命令如下:

    # 加密
    $ echo -n 'user:user' | openssl base64
    dXNlcjp1c2Vy
    
    # 加密
    $ echo -n 'user:user' | base64
    dXNlcjp1c2Vy
    
    # 加密
    openssl base64 -in <infile> -out <outfile>
    
    # 解密
    $ echo -n 'dXNlcjp1c2Vy' | base64 -D
    

    当然也可以通过代码加密/解密。

    3 访问

    3.1 Postman访问

    通过Postman可以直接输入用户名和密码访问,其实它也是帮你自动加个请求头而已。所以要请求,自己不需要再添加请求头Authorization了,免得覆盖了。

    3.2 命令行访问

    通过curl访问如下:

    $ curl http://localhost:8088/user/name -H 'Authorization:Basic dXNlcjp1c2Vy'
    

    欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

    多读书,多分享;多写作,多整理。

  • 相关阅读:
    Oracle expdp 多表导出处理
    字符串
    Java设计模式
    多线程
    Java面向对象练习
    Java面向对象基础
    Java基础算法
    Java常识
    DOS基础命令(1)
    Java基础练习
  • 原文地址:https://www.cnblogs.com/larrydpk/p/14932563.html
Copyright © 2011-2022 走看看