spring security를 이용해서 api 서버를 간단하게 만드는 토이 프로젝트를 진행하다가, 뭔가 거슬리는 것이 있어서 몇 가지 설정을 off 한 게 있었는데요. csrf도 그 중 하나였습니다. 3회 코딩테스트를 출제하느라 얼레벌레 넘어간 감이 있었는데요. 문득 생각이 난 김에 몇 편 정도 써 보려고 합니다. 혹여나 이상한 부분이 있다면, 댓글을 남겨주시면 감사하겠습니다. 먼저, spring security + spring web 디펜던시만 추가하고 아무것도 추가하지 않은 서버를 돌리면, 요런 로그인 페이지가 하나 뜨게 됩니다. 페이지 소스를 보겠습니다. 보면 _csrf라고 hidden type이 하나 뜨게 되는데요. csrfFilter 클래스에서 doFilterInternal 메서드에 브레이크 포..
spring/시큐리티 검색 결과
안녕하세요. 토이 프로젝트를 진행하다가 jwtFilter에서 예외가 발생했을 때, ControllerAdvice로 처리를 했습니다. 그랬더니 500이 떨어졌는데요. 서버에서의 로그를 확인해 보니 jwt의 사용 기한이 경과되었다와 같은 jwt exception이 그대로 떨어졌습니다. 저는, jwt token이 유효하지 않다면, fe단에서 왜 유효하지 않은지 알 수 있게 custom한 메세지와 응답 코드를 뿌려주려고 했습니다. 어떤 식으로 적용을 했는지 간단하게 소개해 보도록 하겠습니다. 공식 문서를 보면 Spring Security에서 Filter에 대한 개략적인 그림이 있어요. 이 그림과 서버에 나타난 로그를 보고 어떻게 코드를 바꿔야 할 지 고민해 보겠습니다. 먼저 GET /borrow는 인증이 되어야..
안녕하세요. 이번 시간에는 스프링 시큐리티에서 자주 보게 될 antPathMatcher에 대해 간단하게 알아봅시다. 이 글에서 반영된 내역들은 모두 다 제 깃 레포에 올라가 있습니다. 프로젝트 구조는 위와 같습니다. 여기서 바꿔야 할 부분을 천천히 보도록 하겠습니다. 먼저, 인증 방식을 프로퍼티에서 설정하지 않겠습니다. 대신에, securityConfig 클래스에서 configureGlobal 메서드로 설정하도록 하겠습니다. 그러니, application.properties의 내용을 아래와 같이 바꾸겠습니다. 인증 정보를 모두 삭제한 모습입니다. 다음에 컨트롤러에 GET /user를 받는 것을 하나 추가하겠습니다. 이 링크로는 모든 유저가 접근할 수 있도록 하겠습니다. 이것은 초기화 함수인 configu..
이번 시간에는 preAuthorized에 대해서 간단하게 알아봅시다. 도서관 토이 프로젝트 중에서, 인증 처리를 구현해야 하는 부분이 있었습니다. 그리고, 특정 권한을 가져야 api를 수행하게끔 하는 기능도 있었습니다. 스프링 시큐리티는 익숙하지 않아서, 테스트용 프로젝트를 하나 더 만든 다음에, 기능을 나누어서 구현하게 되었습니다. 해당 부분에 대해서는 이 레포에서 천천히 다뤄보도록 하겠습니다. 테스트용 프로젝트의 flow입니다. 인증 처리를 구현하고, 인가 처리를 하고, 그에 따라서 api에 접근할 수 있게 할 계획입니다. 한꺼번에 하기에는 양이 너무 많으니, 이번 시간에는 인가 부분만 해 보도록 하겠습니다. 인증하고 인가에 대한 것은 이 글에서 언급을 했어요. 이 글에서 언급할 것은 preAutho..
저번에 bcrypt을 해서, 패스워드를 hashing 하는 것을 썼습니다. 이전 글에서 올려놨던 것과 비교하면 달라진 것이 딱 하나 있습니다. 인자가 하나 추가되었다는 점입니다. String pw 말고도, len을 받는 것이 하나 추가되었는데요. 이것은 strength를 받기 위해 쓰였습니다. 예를 들어, 이 값이 15라면 32768 round, 32768번 반복을 의미합니다. 17이라면 2^17인 131072번 반복을 의미합니다. 당연하게도, len에 지수 비례합니다. 이것은 어렵지 않게 postman 등으로 테스트 했을 때 나옵니다. 이렇게, strength를 정해 준 다음에는, 암호화된 패스워드와, 넘겨준 패스워드를 비교해서 match가 되면 accept를 떨어트려 주고, 그렇지 않으면 wrong을..
최근댓글