사용자 인증 환경에서 쿠키(cookies)란 ?

  • 사용자 인증에서 쿠키는 웹 브라우저에 저장되는 작은 데이터 조각입니다.
  • 서버에서 웹 브라우저로 전송되어 클라이언트의 PC에 저장됩니다.
  • 클라이언트가 웹 서핑이나 API 를 요청할 때 사용자 식별 및 상태 추적을 위해 사용됩니다.

 

사용자 인증 환경에서 쿠키의 생명주기는 어떻게 될까요?

  • 사용자 로그인 : 아이디와 비밀번호 입력 후 서버 요청(HTTP REQUEST)
  • 서버 인증 : 아이디와 비밀번호를 확인하여 유효한 사용자인지 확인 후 사용자를 식별하는 고유한 세션 식별자를 생성
  • 쿠키 생성 : 생성된 세션 식별자를 쿠키에 저장하고, 이 쿠키를 에 담아 클라이언트에 응답(HTTP RESPONSE)
  • 사용자 요청 시 쿠키 전송 : 클라이언트가 서비스에 새로운 요청을 할 때마다 쿠키를 서버에 함께 요청
    • 서버에서 세션 식별자를 통해 유효성을 검증 합니다.
  • 세션 유지 및 로그아웃 : 클라이언트가 활동하는 동안 세션을 유지하고, 로그아웃을 하거나 세션이 만료되었을 경우에는 쿠키를 무효화하고 다시 인증하는 로직을 수행

 

사용자 인증 환경에서 쿠키를 아직 사용하나요?

  • MSA가 보편화된 시점에서 서버는 stateless(상태 없음, 무상태)를 지향합니다. 아니 필수라고 할 수 있습니다. 이럴경우 하나의 서버에서 사용자 인증 세션을 관리하기 어렵습니다. 그렇기 때문에 쿠키-세션 방식은 현재 많이 사용되고 있지 않습니다.
  • 하지만, JWT 토큰을 쿠키에 저장하는 방법은 사용되고 있는데 이 부분은 다음 포스트에서 공유 드리겠습니다.

HTTP 와 HTTPS 의 차이를 묻는 질문 빈도는 면접 외에도 정말 자주 있는것 같습니다.

그러면 HTTP 의 기초부터 HTTPS 까지 폭 넓게 알아가보도록 하겠습니다.

HTTP란?

HTTP(Hypertext Transfer Protocol) 은 인터넷을 통해 정보를 전송하는데 사용되는 프로토콜입니다.

또한 HTTP는 상태가 없는 프로토콜 입니다. 클라이언트와 서버 간의 각 요청이 서로 독립적으로 처리되며, 이전 요청과 상태에 대한 정보를 유지하지 않는다는 것을 의미합니다. 

저희는 이것을 무상태성(Stateless) 이라고 표현합니다.

  • HTTP 의 특징 
    • 데이터를 암호화하지 않고 평문으로 전송하여 보안성 보장이 안됨 (데이터 도청 및 노출 위험이 있음)
    • 기본적으로 80포트를 사용
    • TCP/IP 프로토콜 스택 위에서 동작, TCP 의 여러 특성(연결 지향성, 신뢰성, 흐름 제어 등)을 사용
    • 요청-응답 구조 : 클라이언트가 서버에 요청을 보내고, 서버는 요청 처리을 처리 후 응답하는 구조
    • 메서드 사용 : GET, POST, PUT, DELETE 등

이러한 HTTP 의 특징은 HTTPS 에서도 동일하게 사용됩니다. 

 

HTTPS란?

HTTPS(Hypertext Transfer Protocol Secure) 도 인터넷을 통해 정보를 전송하는 프로토콜입니다.

HTTP 와의 차이점은 이름에서 알 수 있듯이 '보안'과 '암호화' 입니다.

 

  • HTTPS의 특징
    • SSL 또는 TLS 프로토콜을 사용하여 데이터를 암호화. 데이터를 안전하게 전송하여 도청이나 데이터 변조를 방지
    • 기본적으로 443 포트를 사용
    • SSL, TLS 프로토콜을 사용하기 위해 서버의 신원을 인정하는 '인증서'를 요구함. 이를 통해 클라이언트에 서버가 신뢰할 수 있는지 여부를 확인할 수 있음
    • SEO(Search Engine Optimization) : HTTPS를 사용하는 웹사이트는 HTTP를 사용하는 웹사이트보다 더 안전하기 때문에, 검색 엔진에서 더 높은 순위를 받을 수 있음. 즉, 검색 엔진 최적화의 필수 요소
    • 쿠키와 세션을 사용하여 데이터가 안전하게 전송되므로 중간자 공격으로부터 보호됨

 

그럼 결론은?

HTTPS는 HTTP 의 보안 강화 버전으로 생각하시면 됩니다. 전송되는 데이터의 기밀성과 무결성을 보호하는데 사용되며 보안성이 HTTP보다 높습니다.

현재 클라이언트에게 제공 중인 서비스 중 HTTP 를 사용하는건 거의 본적이 없습니다. 만약 HTTP 만 사용하면 chrome, safari 같은 브라우저에서 경고가 뜨거나 접근할 수 없습니다. 그리고 앱스토어 심사에서 불합격할 수 있는 요소입니다.

물론 MSA 구축 시 서버 내부 통신은 http 만 사용할 수 있습니다.

INFO: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.

해당 에러 발생시 tomcat 의 server.xml 파일에서 해당 리스너를 추가 후 재시작 해주시면 됩니다.

 

*리눅스 환경에서는 

/tomcat/conf 경로에 있습니다.

 

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>

 

 

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>

 

이클립스 환경에서 Git 저장소를 Clone 하려고 하는데, 'cannot open git-upload-pack'에러가 발생 했습니다.

해당 에러는 SSL 보안 증명 방식을 false 해줌으로써 쉽게 해결 할 수 있습니다.

 

1. Window -> Preferences -> Team -> Git -> Configuration (그림1)

2. Key : http.sslVerify / Value : false (그림2)

3. 등록 확인 후 Apply / Ok 클릭 하시면 됩니다.

 

(그림1)
(그림2)
(그림3)

 

 

 

 

 

+ Recent posts