Java74 @Controller와 @RestController의 차이점 @Controller와 @RestContoller의 차이점이 궁금함에도 유사한 기능을 하나보다 하며 넘어갔었습니다. 그런데 역시나.. 기능이 다르다는 걸 알게되었고, 이 참에 그 둘의 차이에 대해서 좀 더 알아보려고 합니다. 먼저 문제가 있던 코드는 아래 코드였습니다. 제 의도는 /login 으로 접속했을 때, template directory에 저장되어 있는 loginForm.html을 view로 보여주는 것이었습니다.그런데 의도와는 다르게 return 해주는 String 값이 화면에 나왔습니다. 보통 이런 경우는 @ResponseBody가 붙어있을 때 나타나는데, 그것도 없고 어떤게 문제일까 생각해보았습니다. 그러다가 @RestController를 @Controller로 바꾸어보았고, 원래 의도대로 .. 2022. 8. 6. 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. MapStruct 사용 시 여러 Constructor가 있을 때의 문제점 객체 간 mapping을 위한 코드의 양을 많이 줄여주는 Mapstruct. 구체적인 사용법을 모르고 있다가 의도대로 MapperImpl이 생성되지 않게되며 파워 구글링 덕에 궁금증을 해결했습니다. 공식 문서가 왜인지 한번에 나오지 않아서 이 사이트 저 사이트 전전하다가 겨우 찾았습니다 ㅎㅎ 다행히도 공식 문서 안에는 궁금해 하던 내용이 잘 나와있었고, 이후에는 최소한 이 부분에 있어서는 헤매지 않을 것 같아서 안심입니다. 먼저 궁금증이 폭발했던 상황은 이렇습니다. Spring Data JPA를 사용하고 있기 때문에 Entity를 만들었고, PostDtoToEntity mapper가 필요했습니다. 처음 Entity code는 아래와 같았습니다. @Entity를 사용했기 때문에 @NoArgsConstruc.. 2022. 7. 31. Authentication(인증) (2) - 로그인 절차 & 코드구현 대표적인 인증방식은 username과 password를 html form을 통해 전달받는 방식입니다. Filter에 대한 이전 포스팅에서 공식문서에 기재된 SecurityFilter의 종류를 보여드렸습니다. 그 filter들 중에 "UsernamePasswordAuthenticationFilter"라는 filter가 username과 password를 이용한 인증을 시도할 때 사용이 됩니다. 위의 flowchart가 인증 절차인데, 복잡해 보이지만 큼지막한 흐름만 얘기해보겠습니다. 1. Flowchart의 주황색 부분에 여러 SecurityFilterChain 중에 UsernamePasswordAuthenticationFilter가 동작하는 것을 볼 수 있습니다. 이제보니 filter 이름도 직관적으로 .. 2022. 7. 30. Authentication(인증) (1) - 사용자 정보 저장하기 & 비밀번호 암호화하여 저장하기(DelegatingPasswordEncoder는 무엇인가?) 인증이란 resource에 접근하려는 사람이 누구인지 판별하는 과정을 의미합니다. username과 password를 이용한 인증방식이 일반적입니다. 사용자가 username과 password를 입력하면 일련의 과정을 거쳐 사용자 정보가 저장된 DB에서 사용자를 조회함으로서 인증을 하게 됩니다. 사용자 정보 DB에 해당 정보가 있다면 인증에 성공하고 없다면 실패하게 됩니다. 인증에 성공하게 되면 인증정보를 토대로 권한부여(인가, authorization)까지도 수행할 수 있게 됩니다. 그러니 첫 단계인 인증이 잘 이루어져야 그 이후의 절차들도 견고하게 수행이 될 수 있을 것 같습니다. 그런데 이런 인증이 일어나려면 먼저 인증할 사용자 정보를 생성하고 사용자 정보 DB에 데이터를 저장해야 됩니다. 내가 자.. 2022. 7. 29. 이전 1 2 3 4 5 6 ··· 13 다음 반응형