調試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'

歡迎關注微信公眾號<南瓜慢說>,將持續為你更新...

多讀書,多分享;多寫作,多整理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM