[웹개발 로드맵] 9. 인증

남현우·2022년 7월 2일
0

웹개발 로드맵

목록 보기
9/10

인증(Authentication)

인가(Authorization)

인증을 이해하기 전에 인증과 인가는 다르다는 것을 먼저 알아두자.
인가는 권한을 주는 것을 의미하여, 누구인지에 상관없이 해당 행위에 권한이 있다면 행위를 할 수 있도록 허가하는 것을 뜻한다.

인증

인증은 앞서 설명한 인가와 달리 사용자의 신원을 확인하는 보안 절차를 의미한다.
따라서 인가는 인증 뒤에 이루어져야 하고, 인증을 위한 방법으로는 세션, 쿠키, 토큰을 볼 수 있다.

세션과 쿠키를 알아보기 전에, 세션과 쿠키를 사용하는 방법을 먼저 확인하자면,
http 통신이 비연결지향적이고 상태정보를 유지하지 않는다는 특징을 가져서라고 볼 수 있다.
비연결지향은 요청에 대한 응답이 이루어지면 연결이 끊어짐을 의미하고, 상태정보를 유지하지 않는다는 의미는 클라이언트와 서버가 여러번 통신을 진행해도 이전의 통신내용은 기억하지 않음을 뜻한다.

세션

세션은 브라우저의 종료 이전까지 클라이언트의 요청을 서버에 유지하는 것을 의미한다.
각 클라이언트에 고유 세션 id를 부여하여 요구에 맞는 서비스를 제공하며,
브라우저를 닫거나, 서버에서 세션을 삭제했을 때만 삭제가 되어 비교적 보안이 좋다는 장점이 있다.
단적 예로 로그인이 브라우저를 종료하기 전까지 유지되는 것을 확인할 수 있다.

쿠키

쿠키는 세션과 달리 클라이언트에서 저장되는 정보 파일을 의미한다.
클라이언트가 서버에 접속했을 때, 서버에서 사용자의 컴퓨터에 저장하는 방식으로 동작하며,
이름, 값, 만료시간, 경로 정보로 구성이 되고 개당 4KB, 도메인 당 20개, 총 300개까지 저장이 가능하다.
단적 예로 아이디 저장, 오늘 다시 보지 않기 등을 확인할 수 있다.

쿠키와 세션은 동작원리가 비슷하고 활용도 비슷하다.
다만, 저장위치가 서버와 클라이언트로 나누어지는 이유로 세션측에서 보안이 더 우수하며,
브라우저가 종료되어도 유지되고, 속도면에서 더 우수하다는 쿠키의 장점을 찾을 수 있다.
또 서버에 부하가 발생할 수 있다는 세션의 단점도 있지만 일반적으로 어느 하나만 사용하기 보다는
라이프사이클에 따라서 판단해 상황에 맞게 사용하는 모습을 자주 볼 수 있다.

토큰

토큰은 사용자 인증을 위한 정보를 토큰이라는 코드에 담아 서버에 사용자 정보를 저장하지 않고,
전달받은 토큰의 정보와 데이터를 검증하는 방식으로 인증을 한다.
다만 토큰 자체에 정보가 포함되지만, 상태 정보는 저장하지 않는다.

토큰은 일반적으로 의미없는 문자열로 구성이 되어있지만, json형태로 사용되는데
Refresh 토큰과 Access 토큰으로 나누어 사용하는 것이 보편적이다.
Refresh 토큰은 Access 토큰을 발급하기 위한 요청을 위해 사용하며 유효기한을 길게 설정하고,
Access 토큰은 데이터 요청을 위해 사용하며 유효기한을 짧게 설정한다.

이렇게 세션, 쿠키, 토큰을 활용해 인증을 진행하고 이를 통해 보안을 높이는 것을 확인했으나,
이 인증 방식에서 보안이 뚫릴 수 있다는 문제점도 항상 유의해야한다.

profile
개발 관련 지식을 기록하는 블로그입니다.

0개의 댓글