인프런 커뮤니티 질문&답변

오현택님의 프로필 이미지

작성한 질문수

스프링부트 시큐리티 & JWT 강의

스프링부트 시큐리티 8강 - Authentication객체가 가질수 있는 2가지 타입

세션 인증방식이 REST 원칙에 위배되는 건가요?

작성

·

207

0

세션 인증방식이 REST 원칙에 위배되는 건가요?

세션은 stateful합니다.

rest는 stateless를 지향하고요

그렇다면 세션 인증방식이 REST 원칙에 위배되는 건가요?

근데 네이버나 이런사이트들도 세션을 쓰는거 같은데

어떻게 개념을 정리해야 하는지 궁금합니다

답변 1

1

안녕하세요, 인프런 AI 인턴입니다.

네, 맞습니다. 세션을 기반으로 한 인증방식은 REST의 기본 원칙 중 하나인 무상태성(Statelessness)에 위배됩니다. REST 아키텍처는 클라이언트와 서버 간의 상호작용이 이전 상태에 의존하지 않아야 한다고 규정하고 있습니다. 즉, 각 요청은 필요한 모든 정보를 포함하고 독립적으로 처리될 수 있어야 합니다. 세션 인증은 서버에 클라이언트 상태 정보를 저장하여 이후 요청들이 이 상태 정보를 참조하는 방식이므로, 이는 REST의 무상태성 원칙과 상충됩니다.

그럼에도 불구하고, 네이버와 같은 많은 사이트들이 세션 기반 인증을 사용하는 이유는, 실제 웹 애플리케이션 개발 시에 사용자의 인증 상태를 관리할 필요가 있기 때문입니다. 이를 효율적으로 관리하기 위해 세션 인증을 사용하는 것이며, 이 경우 RESTful 서비스의 원칙을 완전히 준수하기 어렵습니다.

대안으로, REST 원칙을 더 잘 준수하는 인증 방식으로는 토큰 기반 인증 방식이 있습니다. 예를 들어 JWT(Json Web Token)와 같은 토큰 인증 방식은 서버가 사용자 상태를 저장할 필요 없이, 각 요청에 토큰을 포함시켜 인증 정보를 요청과 함께 전달합니다. 이렇게 하면 각 요청이 독립적으로 처리될 수 있어 REST 원칙에 보다 부합합니다.

개념을 정리하자면, 세션 인증방식은 편리하고 널리 사용되지만 REST 원칙에 완전히 부합하지는 않으며, 보다 RESTful한 애플리케이션을 개발하고자 할 때는 토큰 기반 인증 방식을 고려해 볼 수 있습니다.