간단한 인증방식 설명
| topics | 705 보안 |
| index | 이론 |
일반적으로 인증은 세션방식과 토큰방식이 있다.
세션방식은 서버가 세션이라는 자원을 관리하는 방식으로 일반적으로 세션쿠키에 저장된다. 세션 정보는 서버쪽 데이터베이스에 인증정보와 매핑되어있다. 세션쿠키는 브라우저가 닫을 때까지 유지되며 일반적으로 path를 '/'로 두며 자동으로 서버에 쿠키가 전송된다.
토큰 방식은 access,refreshtoken을 일반적으로 사용하며 refresh token은 access token 재발급용으로 일반적으로 쿠키에 만료기한을 넣어 저장한다. accesstoken은 메모리에 저장하며, header에 포함시킨다. 그리고 서버에서는 토크에 서명을 진행하여 해당 토크의 무결성을 확인한다. accesstoken은 stateless하다고 표현하는데 세션과 달리 서버쪽에서 인증정보를 저장하지 않기 때문이다.
세션은 탈취 시 서버가 관리하기에 바로 만료시키는 장점이 있으나 서비스크기와 사용자가 많아지면서 인증정보를 중앙화하여서 관리하거나 동기화처리하기에 비용이 많아졌다. 때문에 토큰 방식을 많이 쓰고 있으며 탈취등의 stateless단점을 보완하고자 blacklist를도입하는 등의 기법을 쓴다.