Backend 개발/Spring Security 6

Spring Security 6 HTTP Basic 인증 예제

수달리즘 2025. 5. 22. 11:38
반응형

HTTP Basic 인증이란?

HTTP Basic 인증 방식은 클라이언트와 서버 간의 통신에서 간단한 인증 메커니즘 중 하나로, HTTP 요청 헤더에 사용자 이름과 비밀번호를 함께 전송하여 인증하는 방식이다.

※ 웹에서는 보통 httpBasic 인증 방식을 잘 사용하지 않음

출처: Basic Authentication in ASP.NET Web API ❘ Microsoft Learn

동작 방식

  1. 클라이언트는 인증 정보 없이 서버로 접속 시도
  • base-64 인코딩된 값은 디코딩이 가능하기 때문에 인증정보가 노출됨
    → HTTP Basic 인증은 반드시 HTTPS 와 같이 TLS 기술과 함께 사용해야 한다.
  1. 서버가 클라이언트에게 인증요구를 보낼 때401 Unauthorized 응답과 함께 WWW-Authenticate 헤더를 기술해서 realm(보안영역) 과 Basic 인증방법을 보냄
  2. 클라이언트가 서버로 접속할 때 Base64 로 username 과 password 를 인코딩하고 Authorization 헤더에 담아서 요청함
  3. 성공적으로 완료되면 정상적인 상태 코드를 반환한다.

예제

@Bean("securityFilterChain")
public SecurityFilterChain basicSecurityFilterChain(HttpSecurity http) throws Exception {
    http
            .authorizeHttpRequests(authz -> authz
                    .anyRequest().hasRole("USER")
            )
            // 대부분 basic 설정으로 써도 되긴 함
            .httpBasic(Customizer.withDefaults()).csrf(AbstractHttpConfigurer::disable);
    return http.build();
}
..

@Bean
public UserDetailsService userDetailsService() {
    UserDetails user = User.withUsername("user")
            .password("{noop}1234")
            .roles("USER").build();
    UserDetails user2 = User.withUsername("user2")
            .password("{noop}1111")
            .roles("USER").build();
    // user 객체 여러개 생성 가능
    return new InMemoryUserDetailsManager(user, user2);
}

이렇게 설정하고 서버를 띄워 접속하면 다음과 같은 화면이 나타난다.

나같은 경우는 다음과 같이 Postman으로 인증 요청을 진행했다.

Postman에서 사용자가 입력한 username/password를 Base64로 인코딩하여 보내므로 사용자가 따로 인코딩할 필요가 없다.

서버에서는 BasicAuthenticationFilter가 username/password 를 base64 디코딩하여 이후 인증 처리를 진행한다.

BasicAuthenticationFilter에 관한 자세한 내용은 다음의 링크에서 확인할 수 있다.

https://soodal0328.tistory.com/94

 

Spring Security 6 BasicAuthenticationFilter 이란?

BasicAuthenticationFilterHTTP Basic 인증 에서 사용되는 필터로서 클라이언트가 Base64로 인코딩하여 보낸 username/password 를 BasicAuthenticationConverter 를 이용하여 디코딩한다.// BasicAuthenticationFilter 코드protected

soodal0328.tistory.com

 

728x90
반응형