Back-end 65

OAuth 2.0(Open Authorization 2.0)

1. OAuth 2.0란? OAuth 2.0을 사용하면 대부분의 로그인, 개인정보 관리 책임을 서드파티 애플리케이션(Google, Facebook, Kakao 등)에게 위임할 수 있다.(단, 사용자가 기존에 서드파티 서비스에 회원가입 되어있어야 함.) 뿐만 아니라 각 서드파티가 가지고 있는 사용자의 리소스를 조회 등을 내 애플리케이션에서 수행할 수 있다. 2. OAuth 2.0의 구성요소 1) Client : OAuth 2.0을 사용해 서드파티 로그인 기능을 구현할 자사 또는 개인 애플리케이션 서버다. 2) Resource Owner : 서드파티 애플리케이션 (Google, Facebook, Kakao 등)에 이미 개인정보를 저장(회원가입)하고 있으며 Client가 제공하는 서비스를 이용하려는 사용자를 ..

Spring Security- JWT AccessToken, RefreshToken

AccessToken : 인증 -> 인가로 특정 리소스 접근 용도 RefreshToken : 만료된 AccessToken 발급받는 용도(DB 저장) 과정 사용자는 access_token이 만료되었을 때 만료 됐다는 응답을 받으면 클라이언트에서 다시, access_token과 refresh_token을 서버에 보냅니다. 서버에서는 refresh_token이 유효하다면, 클라이언트에게 다시 새로운 access_token을 발급해줍니다. [글로벌 회사들의 토큰 정책] 액세스 토큰을 발급할 때, Refresh 도 새로 발급해서, 계속계속 보안성을 가져가면서 무한 로그인을 유지한다던가 Refresh 의 기간이 끝나면 새로 로그인을 하도록 한다던가 Refresh를 아예 사용하지 않는다거나 (애플의 정책) Refre..

DTO(DataTransferObject) vs. VO(Value Object)

1. DTO와 VO 차이는 무엇인가? 1. DTO (데이터 전달용 객체) Data Transfer Object 각 계층(레이어) 간 데이터 교환을 위한 객체 (Controller, Service) 값이 변할 수 있다. DTO dto1(1)!= DTO dto2(1) 데이터 접근 이외의 기능을 가지지 않음(정렬, 직렬화 등 데이터 표현을 위한 기능은 가질 수 있음) 로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만 보유한 클래스 하지만 DB에서 꺼낸 값을 임의로 변경할 필요가 없기 때문에 DTO클래스에는 setter가 없다..? (대신 생성자를 통해 속성 값들을 초기화 하게 만들어 불변 객체로 만들면 DTO가 전달 과정 중에 변조되지 않음을 보장할 수 있다.) 속성값이 모두 ..

JAR와 WAR의 차이점

1. JAR와 WAR의 차이점 JAR SpringBoot의 내장톰켓 vs. WAR 외장톰켓, jsp 이용시 Maven 등을 통해 내려받는 라이브러리들(External Libraries)은 CLASS 파일들이 묶인 jar파일로 구성되어 있는 것을 확인할 수 있다. 그리고 서비스 배포시에는 프로젝트를 WAR 포맷으로 묶어서 /webapps 등의 지정된 경로에 넣고 Tomcat 등의 웹 컨테이너(Web Contaioner)를 이용하여 deploy하는 식으로 서비스를 많이 올리곤 한다. JAR 과 WAR .jar 확장자 파일에는 Class와 같은 Java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어 있다. 쉽게 JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일로 생각하면 된다..

SpringBootServletInitializer

War vs. Jar 배포상의 차이 @SpringBootApplication public class SuperApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SuperApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SuperApplication.class); } } 보통 SpringBoot 웹 애플리케이션을 배포할 때는 embedded..

직렬화(Serialization)

1. 의미 객체를 컴퓨터에 저장했다가 다음에 다시 꺼내 쓸 때 혹은 네트워크를 통해 컴퓨터 간에 서로 객체를 주고받을 때 직렬화를 통해 가능하다.(직렬화 한 후에 저장하거나 전송하고 필요할 때 역직렬화해서 꺼내 쓴다.) 직렬화란 객체를 데이터 스트림(Byte형태로 변환)으로 만드는 것을 의미한다. 다시 말해 객체에 저장된 데이터를 스트림에 쓰기(write) 위해 연속적인(serial) 데이터로 변환하는 것을 말한다. 반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 역직렬화(deserialization)라고 한다. ◇객체란? 클래스에 정의된 인스턴스 변수의 집합(클래스 변수나 클래스 메서드가 포함되지 않음)을 의미한다. 따라서 객체를 저장한다고 하는 것은 객체의 모든 인스턴스 변수의 값을 저장한다..

Springboot Swagger- SpringSecurity 연결 설정

1. SpringSecurity- Swagger2 설정 연결 https://it-recording.tistory.com/64 [Spring] Spring Security + Swagger2 연결 Spring을 사용한 프로젝트를 할 때 API를 하나하나 적는 것은 많은 시간과 노력을 요구한다. 이에 자동화 된 API 툴을 제공하는데 그 중 Swagger를 연결하는 방법을 알아보겠다. (+마주했던 오류와 함 it-recording.tistory.com 2. SpringBoot - Swagger 설정 https://velog.io/@borab/Spring-boot-Swagger-%EC%84%A4%EC%A0%95-gradle Spring boot Swagger 설정 (gradle) 🐏 ❗ 스프링 부트 swagg..

변경된 WebSecurityConfigurerAdapter

1.설정 방법 https://velog.io/@pjh612/Deprecated%EB%90%9C-WebSecurityConfigurerAdapter-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8C%80%EC%B2%98%ED%95%98%EC%A7%80 Deprecated된 WebSecurityConfigurerAdapter, 어떻게 대처하지? 스프링 버전이 업데이트 됨에 따라 WebSecurityConfigurerAdapter와 그 외 몇 가지들이 Deprecated 됐습니다.스프링에서는 다른 방식으로 시큐리티 설정을 권장하고 있는 듯 해보였는데요. 방식이 바뀐 탓 velog.io 2. 공식 문서 https://spring.io/blog/2022/02/21/spring-security-with..