전체글139 method return에 대한 고민 method 를 만들 때 정상적인 flow 가 아닌 상황을 고려하다보면 null, Optional, exception 3가지를 활용하게 된다. rsa 키를 달라는 요청을 받을 때, 미리 만들어둔 키를 캐시에서 가져오고 캐시에 없으면 새롭게 만드는 로직을 예제로 살펴보자. public RsaKeyData getRsaKeyData() { RsaKeyData rsaKeyData = getCacheData(); if (rsaKeyData == null) { return generateRsaKeyData(); } return rsaKeyData; } 위 코드에서 이 메서드가 null 을 리턴하면 새롭게 rsa 키를 만들도록 되어있다. 그런데 getCacheData 메서드 결과가 null 이라는건 무슨뜻일까? 1... 2021. 2. 7. Cookie SameSite 기본편 쿠키는 stateless(상태 정보를 유지하지 않는) HTTP protocol 에서 stateful 하게 사용할 수 있게 해주는 수단이다. 먼저 쿠키의 기본 성질에 대해서 알아보자. 1. 서버에서 응답 헤더로 아래와 같은 Set-Cookie 헤더를 보내주면 이후 요청마다 브라우저가 헤더에 쿠키 정보를 같이 전송해준다. 2. admin.ybs.com 도메인으로 쿠키를 만들었을 때, 브라우저는 하위 도메인 요청에도 쿠키를 같이 전달한다. SameSite SameSite 탄생 배경 Set-Cookie: ybs=1234; Path=/; Domain= admin.ybs.com; SameSite=Strict 위와 같이 쿠키에 SameSite 속성이 새롭게 추가 되었다. 사실 새롭다고 하기는 뭐한게 2016년에 dr.. 2021. 2. 5. https + id/pw rsa 암호화 로그인 페이지를 재개발 하면서 전체적인 흐름을 정확히 알 필요가 생겼다. https 를 이용해 요청/응답 데이터가 암호화되는데, id/pw 입력 데이터를 한번 더 암호화 하면서 복잡도가 증가했기 때문이다. https 통신 먼저 기본적인 https 메커니즘부터 살펴보자. 처음에 YBS 서버가 CSR 파일을 만들어서 CA 인증기관 에 요청해야 한다. 인증서 등록 작업(구매)이다. CSR 파일을 생성할 때 YBS 비밀키, YBS 공개키를 만들게 되고 YBS 서버 인증서를 위한 정보를 입력해 파일을 만든다. $ openssl genrsa -rand rand.dat -des3 2048 > ybs.key.pem $ openssl req -new -key ybs.key.pem > ybs.csr.pem // 이후 cs.. 2021. 1. 31. Spring Cloud Gateway CORS 주의사항 CORS 요청을 받기 위해 서버가 해줘야 하는 작업들이 있다. 그런데 Spring Cloud Gateway 는 프록시 서버이기 때문에 조금 더 신경써야 하는 부분이 있어 정리했다. ※ CORS 기본 개념까지 같이 설명하기엔 글이 너무 길어져서 안다는 전제로 작성했다. 먼저 Spring Cloud Gateway 는 CORS 요청을 디폴트로 막는다. CORS 허용하는 방법 1) CorsWebFilter 첫번째 방법은 CorsWebFilter 를 이용하는 것인데, 헷갈리지 말아야 될 게 있다. CorsWebFilter 는 Spring Cloud Gateway 에서 제공하는 필터가 아니다. org.springframework.web.cors.reactive 에서 제공하는 필터다. 그래서 Spring Cloud .. 2021. 1. 24. 오버로딩vs오버라이딩(면접단골질문) 뻔한 질문이지만 한걸음 더 들어가서 보면 배열과 제네릭까지 묶어서 같이 이야기를 풀어나갈 수 있다. 예제 코드 및 설명은 이펙티브 자바를 많이 참고했다. 먼저 아래의 코드를 살펴보자. 이 코드의 목적은 컬렉션을 종류별로(집합이냐, 리스트냐, 아니면 다른 종류의 컬렉션이냐) 분류하는 것이다. // 의도한 결과를 내지 않는 분류기 public class CollectionClassifier { public static String classify(Set s) { return "Set"; } public static String classify(List lst) { return "List"; } public static String classify(Collection lst) { return "Unknown .. 2021. 1. 22. useInsecureTrustManager 옵션 Spring Cloud Gateway 에서 useInsecureTrustManager 옵션 디폴트는 false 다. Spring Cloud Gateway 가이드는 보안 이유로 true로 설정하는건 production 에 적합하지 않다고 한다. cloud.spring.io/spring-cloud-gateway/multi/multi__tls_ssl.html 7. TLS / SSL The Gateway can listen for requests on https by following the usual Spring server configuration. Example: Gateway routes can be routed to both http and https backends. If routing to a ht.. 2021. 1. 20. 이전 1 ··· 18 19 20 21 22 23 24 다음