Basic Auth
Last updated
Last updated
인증 : 사용자의 자격을 증명하는 것으로 우리가 흔히 아이디와, 패스워드를 통해서 로그인을 하는 행위를 인증으로 볼 수 있다.
인가 : 인가는 인증이 완료된 이후에 무엇인가의 엑세스를 거부하거나 허용하는 프로세스를 말한다. -> 예를 들어, 어플리케이션을 운용하는데 사용되는 API 를 모든 사용자가 사용할 필요는 없기 때문에, 사용자에 대한 API 사용 권한을 제한할 수 있다.
-> 아래와 같이 인가를 위한 가장 기본적인본프로세스를 기본 엑세스 인증(Basic Access Authentication) 이라고 부르며 다음과 같은 프로세스를 진행하게 된다.
클라이언트 입장에서 아무런 정보 없이(ID/PW) 없는 서버에 접근할 경우 서버에서는 401( Unauthorized) 라는 응답 코드를 전달해주게 되며, 해당 접근을 서버 입장에서 엑세스 할 수 없음을 나타낸다.
클라이언트는 사용자 이름과 암호를 Authorization 헤더 값으로 포함해 전달하게 된다. -> 기본 인증을 사용하는 동안 사용자 이름과 비밀번호(이름:비밀번호)를 입력하기 이전에 Basic 이라는 단어를 추가해야 한다. (추가적으로 사용자의 이름과 비밀번호는 Base64 로 인코딩 해야한다, 그렇지 않으면 서버에서 인식할 수 없다.. ) -> Base64 : 문자열 -> 아스키 바이너리 -> 6bit Cut -> Base64_encode -> Base64 Encoding 을 사용하게 되면 전송해야 할 데이터의 양이 늘어나지만, 문자를 전송하기 위해 설계된 미디어(Email, Html ...) 를 이용해 시스템 데이터를 안전하게 전달할 수 있다. (일부 특수 문자를 제외한 안전한 출력 문자만 사용한다.)
2 와 같이 클라이언트가 인증 값을 추가해 서버에 요청할 경우, 서버에서 정상적으로 응답(200 or 403)이 오는 것을 확인할 수 있다.
사용자의 ID 의 암호를 직접 보내는 것은 보안상 여러 문제(Base64 는 암호화가 아닌 인코딩 방식으로 패킷을 가로채면 ID 와 암호를 알아낼 수 있다) 가 있고,
전송한 메시지 인증이 안되는 문제가 있으므로 HMAC 이라는 방식이 제안되었다. -> 그렇구나 ...