이 포스팅은 (1) 스프링 시큐리티 - 알아두어야 할 세 가지 개념과 (2) 스프링 시큐리티 - 스프링 시큐리티 세션에서 이어지는 글입니다.
서론
이전 글에서 세션은 하나의 서버를 운용할 때를 상정하고 나온 개념이라는 전제로 세션을 설명했었습니다. 하지만 서버의 규모와 트래픽이 나날이 갈수록 커지면서 서버를 여러대로 분산시켜야 하는 경우가 비일비재해졌습니다. 서버를 여러대로 분산시킨다는 것은 곧, 여러 대의 서버에서 하나의 세션을 공유해야한다는 전제가 새로 만들어지게 되는 셈입니다. 이것을 어떻게 해결할 수 있을까요? 물론, 세션을 관리하는 인메모리 DB를 가지는 중앙집중식 서버를 하나 두거나, 관련 인증 서버 체계를 두거나 하면 될 것입니다. 하지만 서버를 더 늘려야 하는데 인증 서버를 더욱 더 늘려야 한다? 비용 측면에서 오버헤드(손실)가 필연하게 날 수밖에 없을 것이라는 것을 여러분들도 예상하실 수 있으실 겁니다.
이 문제를 해결하기 위해서(필자-이 문제가 JWT를 관통하는 문제?라고는 사실 생각하지는 않지만, 관련이 없잖아 있다고 생각합니다.) 나온게 JWT입니다. JWT는 세션과 달리 무상태를 기반으로 운용이 되는 인증체계입니다. 세션이라는 개념이 통신 상에서 서버와 클라이언트가 "접속을 유지한다"는 정보를 저장하는 것이었는데, JWT는 관점을 다르게 보고, 마치 에버랜드에서 손목에 끊어주는 티켓과 같은 개념으로 운용하도록 만들어졌습니다. 즉 클라이언트가 JWT 해독 알고리즘과 데이터베이스가 동일한 서버들(Replica같은)에 어느 곳에나 접근해도, 유효한 티켓(JWT)만 가지고 있으면 인증을 할 수 있다는 이야기입니다! (멋져요!)
서론이 길었네요! 제가 부트캠프에서 배웠던 정보들을 바탕으로 이전 글과 동일하게 한번 글을 써보도록 하겠습니다. 추가로, 아래 깃허브 링크에서도 코드를 확인해 보실 수 있으니 글을 다 읽고 궁금해지시면 한번 둘러보세요!
JWT Filter Chain 설정
(작성중)
이 글의 실습 내용을 아래 깃허브 링크에서 만나보실 수 있습니다. 제 글이 JWT 인증 방식의 개발을 하실 때 도움이 되셨으면 좋겠습니다.
https://github.com/tkddn204/spring-security-auth-example/tree/main/auth-rest-api-jwt
'Study > Spring' 카테고리의 다른 글
(2) 스프링 시큐리티 - 스프링 시큐리티 세션 (1) | 2024.01.31 |
---|---|
(1) 스프링 시큐리티 - 알아두어야 할 세 가지 개념 (0) | 2024.01.30 |