기본 인증 Basic Authentication
기본 인증 이라고 불리우는 Basic Authentication
토큰 인증이 잘 쓰이기 이전에, 여러 곳에서 많이 쓰이던 가장 쉽고 간단하게 개발하는 인증 방법 중에 하나. 이 방법이 왜 많이 쓰였을까??
이전 글에서도 말했듯이 세션 기반 인증은 여러 가지로 복잡하고 문제점을 가지고 있다. 그 중에 Cookie가 만들어진 도메인에 한정되는 방법이다 보니 제한 사항이 발생했다.
이 방법은 로그인 페이지가 필요하지 않기 때문에 기계 장치지만, 서버와 통신해야 하는 예를 들면 아래와 같은 지문 등록 기계 같은 경우에 "인증"과 "인가"를 사용하려고 한다면 이 기본인증 (Basic Authentication)을 사용하면 가장 빠르게 개발이 가능하다
기본 인증 방법은 간편하다는 장점 때문에 많은 곳에서 여전히 사용 되고 있다
사용법은 아래의 Flow 를 따른다
Authorization: Basic <credentials>
처음에 인증 없이 서버에 접근하면 401(권한없음) 코드와 함께 헤더에 WWW-Authenticate: {type} realm="인증에 대한 알림 메시지"
형태로 응답을 준다
<credentials>은 기본적으로 Base64-Encoded(A:B)
를 따른다
예를 들면 A는 UserId , B는 Password 를 대응 하여 Base64Encoded("jinny:lamp")
를 하게 되면 값은 amlubnk6bGFtcA==
가 나오게 된다
이 형태를 Request 를 보낼 때, Header 에 키와 값을 붙여서 보내면 서버에서 해당 Header의 값을 읽어 기본 인증을 확인 한 후에 userid:password
에 맞는 값을 매칭 하여 인증을 하는 형태다
이 방법은 base64로 인코딩한다지만, base64는 디코딩이 가능하기 때문에 패스워드
를 직접적으로 보내는 것에 의하여 HTTPS/TLS 가 아닐 경우 감청 당할 수 있는 보안 이슈가 있기 때문에, HTTPS/TLS 를 사용하더라도 되도록이면 사용하지 않도록 권고 되고 있다 (하지만 편리함으로 인해 많이들 사용할 듯... 외부 공개 하지 않지만 내부에서 필요한 곳들에서)