이 강의에서는
Spring Security 프레임워크가
엔드 유저에게서 수신하는
다수의 요청을 유저의 자격 증명을
반복해서 요구하지 않고
처리하는지 시범을 보여드릴 겁니다
일단 보시다시피 우리는 이미 로그인 했습니다
백엔드 서버에서 성공적인
응답을 받았습니다
이걸 수차례 리로드하면
인증이 필요 없는 것을 볼 수 있습니다
바로 응답을 받고 있습니다
이것은 Spring Security 프레임워크가
뒤에서 부리고 있는 또 하나의 마법입니다
어떻게 이럴 수 있는지 보여드리기 위해
단순히 새로운 브라우저 세션을
시크릿 모드로 열어보겠습니다
그리고 똑같은 웰컴 페이지에 접근해 보겠습니다
시스템에서 F 도구를 클릭해
개발자 콘솔을 열면
이게 저의 개발자 콘솔입니다
이 Application 옵션을 클릭해보시면
Storage - Cookies 로 가서
localhost:8080 옵션을 선택하십시오
지금으로써는
제 세션에 JSESSIONID가 생성된 걸 볼 수 있고
이건 제 브라우저에 쿠키로 저장됩니다
그러니 동일한 쿠키가 저의
Spring Security 백엔드 서버에 생성됩니다
이 쿠키는 또한 매 요청마다
제 브라우저에서 백엔드 서버로 전송될 겁니다
일단은
세션 ID 값이 1B6으로 시작하는 걸 볼 수 있습니다
그래서 유효한 자격 증명
eazybytes와 비밀번호 1, 2, 3, 4, 5를 입력하면
로그인을 클릭하자마자
새로운 JSESSIONID 값이 생성되고
브라우저로 반환됩니다
로그인 버튼을 클릭하겠습니다
값이 변한 걸 볼 수 있습니다
현재 값은 A90으로 시작합니다
그러니 이 세션 ID는 Spring Security 프레임워크에
의해 생성되어 응답으로 브라우저로 전송되고
쿠키로 설정됩니다
쿠키이기 때문에 이건 제 브라우저 탭에 남을 것이고
같은 쿠키로 몇 번 요청을 하든
자격 증명을 요구받지 않고
응답을 바로 얻을 수 있을 겁니다
제 브라우저가 유효한 JSESSIONID를 쿠키로 전송하는 한
Spring Security는 오류를 제기하지 않고
자격 증명 없이 저의 요청이 성공적으로
처리되는 것을 허용할 겁니다
이제 우리는 이 토큰을 변조하고자 하는데
우클릭 후 Edit "Value"를 선택하고
이 토큰 안의 글자 하나를 삭제할 겁니다
이로써 저의 쿠키 값을 변조했습니다
이제 페이지를 새로고침 해보면 즉시 로그인 페이지가 뜹니다
Spring Security가 이 유저 이 브라우저를 위해
기존에 생성하던 세션 URL 값이
변조되었기 때문에 해당 유저가
다시 로그인하도록 강제하는 겁니다
이것이 JSESSIONID의 도움으로 가능한
Spring Security의 또다른 강점입니다
기본적으로 모든 로그인된 유저에 대해
JSESSIONID 값을 생성해
유저들에게 반복적으로
강제하지 않도록 합니다
물론 이것은 기본 동작이며
엄청나게 안전하지는 않습니다
JWT 토큰을 활용한
고급 접근법이나
프레임워크가 있는데 추후 강의에서
많이 다룰 예정입니다
어떻게 JSESSIONID의 도움을 받아 작동하는지
여러분이 명확히 이해했으면 좋겠습니다
같은 시나리오를 직접 수행해보시길 바랍니다
마지막으로 지금까지
우리가 다룬 코드를 GitHub 리포지터리에
업로드했다는 점을 강조하고 싶습니다
지금 보시는 것이 우리 GitHub 리포지터리입니다
전에 말씀드렸듯이 이 GitHub 리포지터리 안에서
섹션 1 안에 여기를 클릭하시면
Spring Security Basic이라는 이름의
프로젝트를 업로드했습니다
그러니 의문점이 있을 때마다
언제든 코드를 참조하십시오
우리가 다루는 모든 코드를
섹션 별로 꼭 업로드하겠습니다
지금으로써 우리는 섹션 1에 있습니다
그래서 Spring Security Basic과 관련된
모든 코드를 섹션 1 폴더에 업로드했습니다
이로써 여러분이 Spring Security의 기본을
명확히 이해했다고 생각하며 조금 더 다루겠습니다
감사드리며 다음 강의에서 뵙겠습니다
수고하셨습니다