본문 바로가기

Spring19

Spring - @Component @Service Annotation 들의 차이 Spring을 사용하면 어노테이션을 사용해서 편리하게 개발할 수 있다. 서비스, 레포지토리, 컨트롤러 등등에서 다양한 어노테이션들을 사용해왔을 것이다. 어노테이션이 생기기 전에는 xml 파일에 일일히 객체들을 등록해주었어야 했다. 그 복잡한 xml 파일 대신 어노테이션 하나로 처리할 수 있다니 얼마나 행복한 세상인지 비교가 되지 않는다. 그런데 어노테이션을 사용하기는 하지만 어떤 차이가 있는지에 대해서는 잘 모르는 경우가 많다. 오늘은 어노테이션이 어떻게 다른지에 대해서 알아보도록 하자. 먼저 자주 쓰이는 어노테이션들을 정리해보자. @Repository @Component @Controller @RestController @Service 주로 쓰이는 어노테이션들은 이 정도 일 것 같다. 놀랍게도 여기에 .. 2022. 8. 9.
Spring - CSRF란 Spring Security를 사용하는 예제들을 보면 기본적으로 csrf.disable()을 깔고가는 예제들이 많다. CSRF 공격은 쿠키+세션이 있어야 공격이 가능한데 요즘에는 Stateless하게 api 서버를 만들고 세션 베이스가 아닌 토큰 베이스로 인증을 하다보니 쿠키를 사용할 일이 없어서 csrf를 disable하는 것이다. 그렇다면 좀 더 자세히 CSRF 공격이 무엇인지 알아보도록하겠다. CSRF 공격이란? CSRF는 Cross Site Request Forgery인데 한국말로는 사이트 간 위조 요청이다. 사용자가 본인도 모르는 사이에 해커가 의도한 요청을 웹사이트에 하게 되는 것이다. CSRF 공격은 쿠키와 세션을 통해 당하게 되는데 어떻게 공격을 당하는지 알기 위해 먼저 세션과 쿠키에 대.. 2022. 8. 7.
Spring - Oauth2 Authorization Server에 대해서 상황 오늘은 Spring Oauth2 Authorization Server에 대해서 이야기해보고자 한다. 회사에서 만들고 있는 사이트가 기존에는 사내에서 제공하고 있는 SSO를 사용하고 있었다. 그런데 상황이 바뀌면서 자체적으로 인증을 구현해야되었다. 구조는 단순하게 서버 - 클라이언트로 하나의 서버에서 인증도 하고 다양한 작업들을 하는 것이었다. 따로 인증 서버는 없는 구조이다. 작업 이런 구조에서 무턱대고 Oauth2를 적용하고자 했다. 별 생각 없이 access_token을 만들어서 써야겠다는 생각으로 Oauth2에서 가장 많이 쓰이는 grant type인 authorization_code로 구현을 했다. access_token을 쓰는 이유는 세션을 사용할 필요가 없다는 점인데 서버 - 클라이언트 .. 2022. 8. 6.
Spring Boot - Oauth2 AuthorizationServer(authorization_code) 구축하기 (React 연동) 오늘은 스프링 부트에서 Oauth2 Authorization Server를 구축하는 방법에 대해서 알아보도록 하겠다. 직접 만들어보지 않으면 도무지 어떻게 돌아가는지도 모르겠고 슬쩍보면 너무 복잡해보이는 Oauth2인데 초 간단하게 사용하는 방법에 대해서 알아보도록하겠다. 이제 Spring에서는 Oauth2를 공식적으로 지원하지 않기 때문에 deprecate 경고가 뜨는데 여전히 잘작동하고 있고 다른 것을 원한다면 keycloack 같은 라이브러리를 이용하면 된다. 인증하는 방법(Grant Type)이 4가지가 있는데 나는 2가지를 사용해봤다. password와 authorization_code인데 오늘은 authorization_code 방법을 사용하는 법을 알아보도록 하겠다. authorization.. 2022. 8. 5.