본문 바로가기

Java Spring28

Authentication(인증) (1) - 사용자 정보 저장하기 & 비밀번호 암호화하여 저장하기(DelegatingPasswordEncoder는 무엇인가?) 인증이란 resource에 접근하려는 사람이 누구인지 판별하는 과정을 의미합니다. username과 password를 이용한 인증방식이 일반적입니다. 사용자가 username과 password를 입력하면 일련의 과정을 거쳐 사용자 정보가 저장된 DB에서 사용자를 조회함으로서 인증을 하게 됩니다. 사용자 정보 DB에 해당 정보가 있다면 인증에 성공하고 없다면 실패하게 됩니다. 인증에 성공하게 되면 인증정보를 토대로 권한부여(인가, authorization)까지도 수행할 수 있게 됩니다. 그러니 첫 단계인 인증이 잘 이루어져야 그 이후의 절차들도 견고하게 수행이 될 수 있을 것 같습니다. 그런데 이런 인증이 일어나려면 먼저 인증할 사용자 정보를 생성하고 사용자 정보 DB에 데이터를 저장해야 됩니다. 내가 자.. 2022. 7. 29.
Spring Security의 작동 방식 알아보기 Spring Security는 Spring MVC 영역 전에 작업이 수행됩니다. Spring MVC를 공부하면서 자주 보게되는 Spring MVC flow chart인데요. 위 차트에서는 Incoming request가 바로 Front Controller(=Dispatcher Servlet)으로 전달되는 것으로 표현되어 있습니다. 맞는 말이지만 사실 Front Controller에 전달되기 전에 'Filter'라는 것들을 거치게 됩니다. 보라색 상자로 표현된 Client가 웹브라우저로 HttpRequest를 보내면, Servlet Container는 'FilterChain'이라는 Filter들이 연결되어 순서대로 실행될 수 있는 체인을 생성합니다. (Filter Chain은 Servlet Containe.. 2022. 7. 28.
Spring Security Framework은 어떤 도구인지 대표적인 기능 알아보기 Spring Security framework는 authentication(인증), authorization(인가), protection from attacks(외부 공격으로 부터의 보호)를 위해 사용할 수 있는 프레임워크입니다. 프레임워크의 도움을 받지 않고 인증, 인가 등의 기능을 구현할 수도 있지만 프레임워크를 사용하면 직접 구현해야할 필요가 없어지고 또한 보안성도 보장이 된 기능들이기에 사용하는 것이 훨씬 편리하다고 합니다. 먼저 인증, 인가, 외부 공격으로 부터의 보호란 무슨 의미인지 Spring doc에 나온 내용을 간단하게 살펴보겠습니다. 1. Authentication(인증) 누가 특정 resource에 접근하려고 하는지 verify하는 방식. 일반적으로 username과password를 .. 2022. 7. 25.
em.flush() vs tx.commit() em.flush() 와 tx.commit()의 차이는 무엇일까요? tx.commit()을 하면 내부적으로 em.flush()가 수행된다고 합니다. em.flush()는 데이터를 DB에 저장해주는 역할을 하는데, tx.commit()도 DB에 데이터를 저장하는 용도로 알고 있었기 때문에 tx.commit()은 em.flush()외에 추가적으로 어떤 기능을 하는 것인지 궁금해졌습니다. 1 2 3 4 5 em.flush() - It saves the entity immediately to the database with in a transaction to be used further and it can be rolled back. em.getTransaction().commit - It marks the en.. 2022. 7. 23.
Spring Rest Docs 만들기 Spring에서 배운 내용 중에 현재로서 제가 제일 좋아하는 부분이 바로 Spring Rest Docs를 만드는 것입니다 호호 잘 정리된 API 문서를 보면 기분이 좋더라구요. Spring Rest Docs는 자동으로 API 문서를 제작해주는 기능인데, 수기로 API 문서를 작성할 때 생길 수 있는 오류를 막아주기 때문에 굉장히 유용하다고 합니다! 한가지 Spring Rest Docs를 제작하기 위해 넘어야 할 산은 Controller의 method를 모두 pass해야만 한다는 점입니다. 이 역시 코드를 여러번 작성하다 보면 익숙해지겠죠? 이 포스팅에서는 Spring Rest Docs를 만들기 위해 준비해야하는 것들과 문서에 포함할 내용을 어떻게 코드로 알려주면 되는지 알아보도록 하겠습니다. Spring.. 2022. 7. 19.
Mockito 적용하여 Controller test 해보기 Testing 시에 Layer간의 연결을 끊고 Layer 별 기능을 독립적으로 테스트할 수 있도록 도와주는 도구가 바로 Mockito 입니다.🍸 왜 layer별로 독립적인 테스트가 필요할까요? 특정 계층의 테스트만 필요한데 불필요한 전 계층을 다 거치게 되면서 성능이 떨어지거나 테스트 관심 영역 면에서 벗어나는 것을 방지하기 위해서 입니다. 처음 사용해보려니 생소한데, 어떤 요소들을 생각하면서 사용하면 좀 더 쉽게 사용할 수 있는지 깨달았던 부분들을 글로 남겨두려고 합니다. Mockito 사용법 1. 테스트하려는 Controller와 유사한 구조를 갖는 test class를 test directory에 생성합니다. : 유사한 구조라함은 Controller에서 의존하는 객체, 정의된 메서드(로직은 제외)를.. 2022. 7. 18.
반응형