본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
안녕하세요 :)
오늘은 챌린지 19일차로, 어제 새벽 공부를 안 하고 자서 그런지 굉장히 오랜만에 공부하는 느낌이네요.
오늘 배울 내용은,
Part A. 로그인, 로그아웃, 회원가입으로 배워보는 스프링 시큐리티 기초
Ch 5. AuthenticationProvider 와 인증
"03. HTTP Basic 인증 방식" 입니다.

이번 시간에 HTTP Basic 인증 방식을 기반으로 인증에 대한 예시를 소개해주셨는데, 그 이유는 HTTP Basic 인증 방식이 간단하기 때문에 예제와 데모에서 효과적으로 활용할 수 있기 때문이다. 하지만 HTTP Basic 인증 방식 이외에도 다른 방법들도 존재한다. 이번 시간에는 HTTP Basic 에 대한 추가 구성 방법에 대해 알아보고, formLogin 이라는 새 인증 방식에 대해 배워봤다.
HTTP Basic 이용 및 구성에 대해 생각해볼 점은 인증 프로세스가 실패했을 때, 특정 비즈니스 로직을 수행하도록 구현하려면 어떻게 해야 할지? 또 인증 과정에서 클라이언트로 반환하는 값의 일부를 설정하기 위해서는 어떻게 해야 할지 살펴보려 한다.
SecurityFilterChain 을 설정하여 HttpSecurity 를 파라미터로 받고, Httpsecurity 의 httpBasic 을 설정하면 인증 방식과 관련된 일부 구성을 설정할 수 있다.
HttpSecurity에서 기본 HTTP Basic 설정을 하기 위해서는 Customizer.withDefaults() 를 사용하면 된다. 만약 realm 이라고 하는 인증 영역을 설정하고 싶은 경우에는 httpBasic 의 속성을 활용하면 된다.
또, 401 Unauthorized 가 되게끔 API 를 호출하면 Basic reaim = "REALM_1" 이라는 설정한 영역 이름을 확인할 수 있다.
인증이 실패했을 때의 응답 설정 방법은, AuthenticationEntryPoint 활용하는 것이다. commence() 메소드는 HttpServletRequest, HttpServletResponse, AuthenticationException 을 파라미터로 받는다.
응답에 헤더를 추가하고 HTTP 상태를 '401 Unauthorized" 로 설정하는 방법을 알아보면, CustomEntryPoint 클래스 생성 후 AuthenticationEntryPoint 인터페이스를 상속하여 구현하고, commence() 메소드를 구현하여 addHeader, sendError 설정한다.
인증이 실패했을 때의 응답 설정은 생성한 CustomEntryPoint 를 authenticationEntryPoint 에 입력하고, 요청이 실패했을 때 헤더에 "message" 가 추가되었고, 값은 "Hello World" 를 넣는다. 이후에도 스프링 MVC 흐름과 로그인 성공 후 기본 url 설정에 대해 알아보면서 HTTP Basic 인증 방식에 대해 좀 더 잘 이해할 수 있는 시간이 된 것 같다.