이번글에서는 Spring Security의 HTTP Basic Authentication에 대해 알아보도록 하겠습니다.
1. HTTP Basic Authentication이란?
특정 resource에 대한 접근을 요청할때 브라우저가 사용자에게 username과 password를 확인해 인가를 제한하는 방법입니다.
1-1) process
전체적인 process는 아래와 같습니다.
• 접근이 제한된 GET /home request를 client가 요청합니다.
• server는 401 Unauthorized 에러와 함께, username과 password를 요청합니다.
• browser는 사용자에게 username과 password를 입력받아 다시 동일한 GET /home resource를 요청합니다.
• 이때 요청 header에는 입력받은 username과 password를 BASE64로 Encode한 값을 포함합니다.
• 만약 입력한 username과 password가 server에 저장된 것과 일치할 경우, 200 응답코드와 함께 해당하는 resource를 response 합니다.
1-2) bse64 encoding
base64는 'username : password'를 encode 합니다. 😎
예를 들어 name이 dan이고 password가 password일 경우 아래와 같은 순서로 base64 encode를 수행합니다.
1-3) consideration
HTTP Basic Auth의 특징 및 주의점은 다음과 같습니다.
• HTTP Basic Auth는 굉장히 simple한 방법입니다. 이는 어떠한 cookies & sessions & login page 등이 필요하지 않습니다.
• 전송되는 credentials 값들은 encrypted 되지 않습니다. 단지 Base64로 encode 된 값들을 전달할 뿐입니다. 그 어떠한 encrypte & hash 등의 기술이 적용되지 않습니다. 따라서 보안에 굉장히 취약합니다.
• 위와 같은 보안취약점을 보완하기 위해 HTTP Basic Auth는 반드시 HTTPS와 같이 사용되야 합니다. HTTPS를 사용하면 전송되는 데이터를 노출하지 않을 수 있습니다.
• web server가 "log out" 할 수 있는 method를 제공하지 않습니다.
• HTTP Basic Auth mechanisim은 당신의 app이 수행하는 것이 아닌 브라우저가 수행하는 것 입니다.
HTTP Basic Auth는 굉장히 simple mechanism 입니다. 따라서 SSL과 함께 사용한다고 해도 반드시 non-sensitive resource를 다룰때에만 사용해야 합니다. 😅
참고 자료 : https://www.youtube.com/playlist?list=PLVApX3evDwJ1d0lKKHssPQvzv2Ao3e__Q
추천서적
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'Spring > Security' 카테고리의 다른 글
[Spring Security] Default Configuration - Spring Boot (1) (0) | 2020.09.08 |
---|---|
[Spring Security] SSL & HTTPS (0) | 2020.09.08 |
[Spring Security] JWT Authentication (0) | 2020.09.08 |
[Spring Security] Form Based Authentication (0) | 2020.08.31 |
[Spring Security] Authorities & Role (0) | 2020.08.31 |