본문 바로가기

분류 전체보기48

CORS(Cross-Origin Resource Sharing) 이해와 적용 이전에 프로젝트를 하면서 CORS 문제를 해결하기 위해 애먹은 적이 있다. https://velog.io/@minnseong/CORS-with-Spring-MVC-Security (이전에 사용한 velog) 그 때는 CORS 문제를 해결하는 데에 집중을 해서 CORS의 이해는 조금 부족했던 것 같다. 이번에 CORS에 대해 공부할 기회가 생겨, 이번 포스팅을 통해서 CORS의 이론적인 내용 위주로 정리하고 마지막에는 한번 더 Spring에서 CORS 정책을 해결하는 방법을 기록하려고 한다. SOP Same-Origin Policy 의 약자 다른 출처의 리소스를 사용하는 것에 제한하는 보안 방식으로, 같은 출처에서만 리소스를 공유할 수 있도록 하는 정책 Origin(출처)? Protocol + Host +.. 2023. 6. 8.
[Spring Cloud] Eureka Client 구축하기 이전 포스팅에서 Eureka Server를 구축했으니, 서비스 디스커버리에 등록할 클라이언트를 구현하는 방법을 정리하고자 한다.Eureka Server 구축 : https://minnseong.tistory.com/13 Eureka Client 구축Gradle 의존성 추가implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' Euraka Client 활성화 (XXXApplication.java)@SpringBootApplication@EnableDiscoveryClientpublic class XXXApplication { public static void main(String[] args) { .. 2023. 6. 5.
[Spring Cloud] Eureka Server 구축하기 Spring Cloud Netflix Eureka는 Spring Cloud Framework에서 제공한다.https://spring.io/guides/gs/service-registration-and-discovery/ Eureka는 MSA에서 사용하는 서비스 디스커버리 기능을 제공한다.Service Discovery는 분산 환경에서 각각의 서비스가 서로 찾고 통신할 수 있도록 도와준다.MSA과 같은 분산 환경에서는 서비스 간의 통신이 이루어지며, 이는 IP 주소와 Port를 이용하는 방식이다.하지만 클라우드 환경에서는 서비스가 동적으로 생성되거나, 컨테이너 기반으로 배포되어 IP 주소와 Port가 자주 변경된다.따라서 Service Discovery를 통해 동적으로 변하는 IP와 Port를 직접 알지 .. 2023. 6. 5.
JWT (2) 스프링에서 JWT 사용하기 Gradle 의존성 추가 implementation 'com.auth0:java-jwt:4.2.1' https://mvnrepository.com/artifact/com.auth0/java-jwt/4.2.1 JWT 관련 설정 파일 생성 application-jwt.yml jwt: secretKey: access: expiration: 3600000 # 1시간 header: Authorization refresh: expiration: 1209600000 # 2주 header: Authorization-refresh jwt.secretKey 서버가 가지고 있는 개인키 암호화 알고리즘으로 HS512를 사용할 것이기 때문에, 64 bytes 이상의 영숫자 조합으로 아무렇게 작성 jwt.access.expira.. 2023. 5. 31.
JWT (1) 개념 정리 JWT 란? JSON Web Token의 약자로, 인증에 필요한 정보들을 암호화시킨 JSON TOKEN을 의미한다. JSON 데이터를 Base64 URL-safe Encode를 통해 인코딩하여 직렬화한 것이고, 토큰 내부에는 개인키를 통한 전자 서명이 포함된다. JWT를 통한 인증 과정 클라이언트는 로그인 아이디와 패스워드를 입력하여 서버에 로그인 요청 서버에서 서명된 JWT 토큰을 생성하여 응답 헤더에 저장하여 클라이언트에게 반환 클라이언트는 응답으로 반환된 JWT 토큰을 사용하여 요청마다 Http Header에 JWT 토큰을 담아서 요청 서버에서는 Http Request Header의 JWT를 검증하여 토큰이 유효한지 검증 후 요청에 맞는 응답 반환 JWT의 구조 Header 보통 토큰의 타입이나 전.. 2023. 5. 31.
[Spring] 벌크 연산 벌크 연산이란 여려 데이터를 한 번에 수정하거나 삭제하는 방법이다. 실제 벌크 연산을 하지 않을 경우, 어떤 성능적 이슈가 생기는지 예시를 통해서 알아보자. @Entity @AllArgsConstructor @NoArgsConstructor class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private int age; public void getOlder() { this.age += 1; } } Member member1 = new Member("john", 15); Member member2 = new Member("tom", 19); Member membe.. 2023. 5. 15.