정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!
HTTP Basic 인증
- HTTP는 엑세스 제어와 인증을 위한 프레임워크를 제공, 가장 일반적인 인증 방식은 "Basic" 인증 방식
- 인증 프로토콜은 HTTP 인증 헤더에 기술되어 있음
Client
↓ GET /home
인증되지 않은 상태)
서버 → 클라이언트
401 Unauthorized
WWW-Authenticate: Basic realm="localhost"
서버는 클라이언트에게 인증 요구를 보냄
401 Unauthorized 응답
WWW-Authenticate 헤더 ≫ realm(보안영역)과 Basic 인증 방법 포함
↓
username, password 입력 후 다시 요청
클라이언트 → 서버
GET /home
Authorization: Basic YWxpY2U6cGFzc3dvcmQ
Base64로 username과 password를 인코딩하고, Authorization 헤더에 담아 서버로 전송
↓
성공적으로 완료되면 정상 상태 코드 반환
서버 → 클라이언트
200 OK
** 주의 사항
- base-64로 인코딩된 값은 디코딩이 가능함 ≫ 인증정보 노출 !
- 따라서 HTTP Basic 인증은 반드시 HTTPS와 같이 SSH, TLS 기술과 함께 사용해야 함
httpBasic() API
- HttpBasicConfigurer 설정 클래스를 통해 여러 API 들을 설정할 수 있음
- BasicAuthenticationFilter : 인증 처리를 위한 필터, 내부적으로 생성되어 기본 인증 방식의 인증 처리를 담당
- realmName : HTTP 기본 영역을 설정
- authenticationEntryPoint : 인증 실패 시 호출됨
- 기본값은 "Realm" 영역으로 BasicAuthenticationEntryPoint가 사용됨
- BasicAuthenticationEntryPoint따로 설정하지 않아도 기본값으로 잘 동작함
→ 인증 실패 시 WWW-Authenticate 헤더를 포함해서 보내도록 하여 인증 요구 - db 저장 등 특별한 로직 구현 필요 없다면 customEntryPoint 굳이 설정하지 않아도 됨
동작 과정
1. Customizer.withDefaults() 로 기본값으로 설정
2. 클라이언트에서 서버 요청 → localhost:8080 접속
3.
- 401 Unauthorized 응답
- header에 WWW-Authenticate: Basic realm="Realm" 전달 → 헤더값을 통해 인증 요구를 파악 후 로그인 창을 띄움
4. 올바른 username, password 입력 후 로그인
5.
- 서버에서 인증 처리 후 200 OK 응답
- WWW-Authenticate 헤더는 사라짐
'spring security' 카테고리의 다른 글
기억하기 인증 - rememberMe() (0) | 2025.01.28 |
---|---|
기본 인증 필터 - BasicAuthenticationFilter (0) | 2025.01.27 |
폼 인증 필터 - UsernamePasswordAuthenticationFilter (0) | 2025.01.19 |
폼 인증 - formLogin() (0) | 2025.01.19 |
사용자 정의 보안 설정하기 (0) | 2025.01.17 |