본문 바로가기

spring-security4

RestController 테스트 시 JWT 생성하기 Spring Security dependency가 적용된 상태에서는 unit test를 할 때도 security 관련 처리를 해주어야 합니다. 즉, 회원 인증 절차를 포함해주어야 합니다. (인증된 유저가 서비스를 이용한다는 가정) 만약에 인증 과정을 거치지 않으면 아래처럼 Unauthorized 에러가 발생합니다. 어떠한 방법으로 해결하면 되는지 찾아보니 @WithMockUser를 사용하면 된다는 것을 알게 되었습니다. 문서에 상세하게 사용법이 나와있는데, 기본적으로는 test하고자 하는 메서드 테스트 코드에 @WithMockUser만 붙여주면 된다고 합니다. 사용해보니 테스트 통과가 되더라구요. 하지만 특정한 username이나 password를 사용해서 인증을 하고 싶은 경우 혹은 권한을 달리하여 인.. 2022. 9. 20.
JWT란? JWT 생성과 사용 방법 알아보기 이전에 알아보았던 인증과 인가에서는 Session을 사용했습니다. Session은 Http Request의 Stateless한 특성을 보완하기 위해 유저의 정보를 서버에 저장하기 위해 사용되는 수단입니다. 🏷 원래 Http Request는 State를 저장하지 않기 때문에 이미 종료된 요청에 대해서 기억하지 못합니다. 이러한 특성을 무상태성(Staelessness)라고 합니다. 유저가 로그인을 한 이후에 생긴 session 정보를 서버에 저장해두고, 인증이 필요할 때마다 session 정보를 비교하여 인증상태를 유지하게 됩니다. Session은 서버를 기반으로 수행하는 인증이기 때문에 요청 회수가 증가할 수록 서버 부담 역시 증가하게 됩니다. 이런 서버의 부담을 줄여주기 위해 고안된 방식이 Token 인.. 2022. 8. 5.
Authorization(인가)-인가 내부 절차 & 권한 설정하기 지난번에는 Authentication(인증)에 대해 알아보았고, 이번에는 사용자마다 접근 권한을 다르게 설정하는 authorization(인가)에 대해서 알아보겠습니다. 블로그에 글을 쓰려면 해당 블로그에 대한 관리자 권한이 있어야 글 쓰기 및 수정이 가능합니다. 해당 블로그 수정 권한이 없는 유저는 글 수정 페이지에 접근할 수가 없습니다. 웹사이트를 이용할 때 이런식으로 권한을 차등적으로 부여하는 경우가 상당히 많이 있습니다. Spring Security에서도 이런 권한 부여와 관련된 기능을 제공하는데, 내부 절차는 어떤지와 어떻게 구현하는지 차근차근 알아보겠습니다. Authorization 내부 절차 인가 작업은 FilterSecurityInterceptor에서 이루어질 수 있습니다. console창.. 2022. 8. 1.
Authentication(인증) (1) - 사용자 정보 저장하기 & 비밀번호 암호화하여 저장하기(DelegatingPasswordEncoder는 무엇인가?) 인증이란 resource에 접근하려는 사람이 누구인지 판별하는 과정을 의미합니다. username과 password를 이용한 인증방식이 일반적입니다. 사용자가 username과 password를 입력하면 일련의 과정을 거쳐 사용자 정보가 저장된 DB에서 사용자를 조회함으로서 인증을 하게 됩니다. 사용자 정보 DB에 해당 정보가 있다면 인증에 성공하고 없다면 실패하게 됩니다. 인증에 성공하게 되면 인증정보를 토대로 권한부여(인가, authorization)까지도 수행할 수 있게 됩니다. 그러니 첫 단계인 인증이 잘 이루어져야 그 이후의 절차들도 견고하게 수행이 될 수 있을 것 같습니다. 그런데 이런 인증이 일어나려면 먼저 인증할 사용자 정보를 생성하고 사용자 정보 DB에 데이터를 저장해야 됩니다. 내가 자.. 2022. 7. 29.
반응형