[Spring Security] HTTP Basic Authentication

반응형

이번글에서는 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


추천서적

 

스프링5 레시피:스프링 애플리케이션 개발에 유용한 161가지 문제 해결 기법

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


반응형

댓글

Designed by JB FACTORY