티스토리 뷰
인증과 인가
인증(authentication)은 사용자가 누구인지 확인하는 절차이다.
회원가입과 로그인 과정이 인증의 대표적인 예시이다. 인가(authorization)은 사용자가 요청하는 것에 대한 권한이 있는지를 확인하는 절차이다.
세션을 통한 인증, 인가(auth)의 절차는 다음과 같다.
- 클라이언트가 로그인을 하면 서버는 회원정보를 대조하여 인증을 한다.(authentication)
- 회원 정보(클라이언트 정보)를 세션저장소에 생성하고 session ID를 발급한다.
- http response header 쿠키에 발급한 session ID를 담아서 보낸다.
- 클라이언트에서는 session ID를 쿠키 저장소에 저장하고 이후에 http request를 보낼 때마다 쿠키에 session ID를 맏아서 보낸다.
- 서버에서는 쿠키에 담겨져서 온 session ID에 해당하는 회원 정보를 세션 저장소에서 가져온다.(authorization)
- 응답 메시지에 회원 정보를 바탕으로 처리된 데이터를 담아서 클라이언트에 보낸다.
사용자 로그인을 하면 서버는 session ID를 쿠키로 클라이언트에게 보낸다. 클라이언트는 session ID를 요청시마다 헤더에 담아서 보내면 서버는 session ID에 해당하는 클라이언트 정보를 세션저장소에서 가져온다. 이를 통해 클라이언트 정보에 따라 맞춤 응답을 할 수 있게 된다. 하지만 서버에서 세션저장소를 사용하여 사용자 데이터를 저장해야 되기 때문에 추가적인 저장공간을 필요로 한다.
session ID만 쿠키에 담겨서 요청을 보내기 때문에 요청 때마다 사용자 정보를 쿠키에 담아서 전송하는 것보다 안전한다. 하지만 session ID만 노출되어 악의를 가진 다른 사용자가 이를 이용해 서버에 요청하면 서버는 구별해낼 수 있는 방법이 없다. 이를 Session hijacking 이라고 한다. 해결책으로는 HTTPS를 사용하거나 session에 짧은 주기로 만료시간을 설정하는 방법이 있다.
또한 세션과 쿠키를 이용한 로그인 방식은 Load Balancing 및 서버 효율성 관리 및 확장이 어려워질 수 있다는 단점이 있다.
'CS > 컴퓨터네트워크' 카테고리의 다른 글
CORS에 대해 간단하게 설명해주세요. (0) | 2023.07.23 |
---|---|
HTTP 요청방법중 GET과 POST에 대해 비교 설명해주세요. (0) | 2023.07.07 |
쿠키와 세션 (0) | 2023.07.07 |
만약 www.naver.com으로 브라우저에서 접근하여 화면이 본인에게 나오기까지의 과정을 네트워크 관점에서 설명해주세요. (0) | 2023.07.07 |
HTTP에 대해 설명하고 추가로 HTTPS에 대해서도 말씀해주세요 (0) | 2023.07.07 |