SpringBoot
Springboot Dto는 많이 만들어도 될까?
Springboot Dto는 많이 만들어도 될까?
2022.02.22Dto란? Dto는 Data Transfer Object의 약자입니다. 계층 간 데이터 교환 역할을 합니다. DB에 저장되는 Entity를 감싸 Wrapper라고 생각할 수 있습니다. Entity를 클라이언트단과 연결되는 Controller에 사용할 때 문제점이 있습니다. 1. Entity의 스펙 노출 -> Entity의 모든 값이 외부에 노출 될 수 있습니다. 2. 기능에 따라 요구하는 데이터가 다름 -> signup 기능: 이름, 아이디 등등 , login 기능: 아이디, 패스워드 이러한 문제를 해결하기 위해 Dto를 사용합니다. 예를 보겠습니다. @RestController @RequiredArgsConstructor @Slf4j public class UserController { private ..
Springboot [스프링부트] Spring Sercurity Basic(4)
Springboot [스프링부트] Spring Sercurity Basic(4)
2022.02.12기존에 만들었던 Springboot 프로젝트에 SSL/HTTPS를 적용하겠습니다. 1. SSL certificate 만들기 ( cmd 창을 관리자 권한으로 실행해야 합니다.) java의 jdk가 있는 곳으로 이동합니다. where java // 명령어를 입력하면 java의 디렉터리 위치가 나옵니다. 3번째 디렉터리로 이동합니다. keytool -genkey -alias bootsecurity -storetype PKCS12 -keyalg RSA \ -keysize 2048 -keystore bootsecurity.p12 -validity 365 아래와 같이 값을 입력하고, 실행하시면 됩니다. java 디렉터리에서도 파일이 생성된 것을 확인할 수 있습니다. resources 밑에 위치합니다. 실제 운영할 ..
SpringBoot [스프링부트] Spring Security Baisc (3)
SpringBoot [스프링부트] Spring Security Baisc (3)
2022.01.27전 글에서 인증과 권한에 대해 다뤘고, 같은 권한을 가진 User는 다른 User의 리소스에 접근할 수 있었습니다. Interceptor를 통해서 인가 문제를 해결해보겠습니다. 1. Interceptor란? 인터셉터(Interceptor)는 스프링의 Spring Context(ApplicationContext) 기능입니다. 임의의 URI를 호출 시 DispatcherServlet에서 해당 Controller가 처리되기 전과 후에 발생하는 것을 처리할 수 있습니다. 즉 DispatcherServlet -> Interceptor -> Controller -> Interceptor -> ~~ 로 표현할 수 있습니다. 2. UserController 수정 @PostMapping("/character") publ..
SpringBoot [스프링부트] Spring Security Basic(2)
SpringBoot [스프링부트] Spring Security Basic(2)
2022.01.27프로젝트 개요 User는 회원 가입을 하고 로그인을 할 수 있다. User의 권한을 가진 사람만 캐릭터를 만들 수 있다. 캐릭터는 여러 개 생성 가능하다. Guest의 권한을 가진 사람은 /user과 /character에 접근이 불가능하다. 위의 요구사항을 토대로 만들겠습니다. 기본 개념들에 대한 설명은 생략하고, Security에 관한 내용만 설명하겠습니다. 1. User @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity @Getter public class User implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Col..
SpringBoot [스프링 부트] Spring Security Basic (1) 프로젝트 생성
SpringBoot [스프링 부트] Spring Security Basic (1) 프로젝트 생성
2022.01.25프로젝트 생성 Intellij Ultimate 버전에서 진행합니다. File -> New -> Project SpringIitializr -> Next 설정 변경 후 Next 디펜던시 추가 후 Next 프로젝트 경로 확인 후 finish하여 프로젝트 생성 라이브러리를 다운로드 하는데 약간의 시간이 걸립니다. Application 실행하기 localhost:8080에 접속했을 때 아래와 같이 뜨면 정상 작동입니다. 앞으로 사용할 프로젝트를 만들었습니다. 다음부터 실습을 시작하겠습니다. 감사합니다. 모든 코드는 아래 링크에서 확인 가능합니다. https://github.com/rlaehdals/secuitybasic GitHub - rlaehdals/secuitybasic Contribute to rlaeh..
SpringBoot [스프링부트] Spring Security Basic (0)
SpringBoot [스프링부트] Spring Security Basic (0)
2022.01.251. Spring Security란? Spring 기반의 애플리케이션 보안(권한,인증 , 인가 등을) 담당하는 Spring 하위 프레임워크 입니다. Spring Security는 Filter의 흐름에 따라 처리합니다. Interceptor와 Filter로 인증과 권한에 대한 부분을 대부분 처리합니다. Filter의 경우 Dispatcher Servlet으로 가기전에 적용되며, Interceptor는 Dispatcher와 Controller사이에 적영되어, 적용시기가 다르다는 점이 있습니다. Interceptor로도 Security와 같이 동작하게 할 수 있지만 Spring에서는 Security사용을 적극 권장하고 있습니다. 2. 인증과 인가 인증(Authentication): 해당 사용자가 본인이 맞는지..