spring security를 이용해서 api 서버를 간단하게 만드는 토이 프로젝트를 진행하다가, 뭔가 거슬리는 것이 있어서 몇 가지 설정을 off 한 게 있었는데요. csrf도 그 중 하나였습니다. 3회 코딩테스트를 출제하느라 얼레벌레 넘어간 감이 있었는데요. 문득 생각이 난 김에 몇 편 정도 써 보려고 합니다. 혹여나 이상한 부분이 있다면, 댓글을 남겨주시면 감사하겠습니다. 먼저, spring security + spring web 디펜던시만 추가하고 아무것도 추가하지 않은 서버를 돌리면, 요런 로그인 페이지가 하나 뜨게 됩니다. 페이지 소스를 보겠습니다. 보면 _csrf라고 hidden type이 하나 뜨게 되는데요. csrfFilter 클래스에서 doFilterInternal 메서드에 브레이크 포..
Security 검색 결과
안녕하세요. 토이 프로젝트를 진행하다가 jwtFilter에서 예외가 발생했을 때, ControllerAdvice로 처리를 했습니다. 그랬더니 500이 떨어졌는데요. 서버에서의 로그를 확인해 보니 jwt의 사용 기한이 경과되었다와 같은 jwt exception이 그대로 떨어졌습니다. 저는, jwt token이 유효하지 않다면, fe단에서 왜 유효하지 않은지 알 수 있게 custom한 메세지와 응답 코드를 뿌려주려고 했습니다. 어떤 식으로 적용을 했는지 간단하게 소개해 보도록 하겠습니다. 공식 문서를 보면 Spring Security에서 Filter에 대한 개략적인 그림이 있어요. 이 그림과 서버에 나타난 로그를 보고 어떻게 코드를 바꿔야 할 지 고민해 보겠습니다. 먼저 GET /borrow는 인증이 되어야..
Bcrypt를 써먹기 위해서, 스프링 시큐리티 dependencies를 추가하였습니다. 이렇게 추가하고, 프로젝트 껍데기 zip 파일을 다운로드를 받아 봅시다. controller하고 application.properties만 조금 바꿔 보겠습니다. server.port는 7780으로 바꿉니다. 그리고, GET /를 받는 test 메소드를 작성했습니다. 별 다른 것은 없고요. 9번째 줄에서, "abcde"를 BCryptPasswordEncoder로 암호화 시킵니다. 다음에, 10번째 줄에서, encoder.matches로 get 파라미터로 날라온 pw와 encrypted_pw가 같은지 비교하게 됩니다. 만약에, 이 두 결과가 같다면 accept를 리턴하고, 아니라면 wrong을 리턴합니다. API는 매우..
최근댓글