본문 바로가기

분류 전체보기

(17)
[Spring Boot] Spring Security JWT Token JWT(Json Web Token) Json 객체를 통해 안전하게 정보를 전송할 수 있는 웹표준 Json 객체를 암호화하여 만든 String 값 기본적으로 암호화가 되어 있어 변조하기 어려움 JWT를 이용하여 로그인 구현 1. gradle dependency 추가 - build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'io.jsonwebtoken:jjwt:0.9.1' } 2. 비밀키 설정 - application.properties jwt.secret=thisiskey 3. JwtTokenProvider 생성 Jwt 생성하고, 유효성을 검증하는 컴포넌트..
[Spring Boot] Spring Security PasswordEncoder PasswordEncoder Spring Sercurity에서 지원하는 비밀번호 단방향 암호화 인터페이스 public interface PasswordEncoder { // 비밀번호 암호화 String encode(CharSequence rawPassword); // 암호화되지 않은 비밀번호(raw)와 암호화된 비밀번호(encoded)가 일치하는지 비교 boolean matches(CharSequence rawPassword, String encodedPassword); // 암호화된 비밀번호를 다시 암호화하고자 할 경우 return true default boolean upgradeEncoding(String encodedPassword) { return false; } } BcryptPasswordE..
[암호화] 양방향 암호화(AES, RSA)와 단방향 암호화(SHA, MD5, BCrypt) 양방향 특정한 key를 통해 암호화와 복호화가 모두 가능한 암호화 주민등록번호나 핸드폰번호처럼 보안이 필요한 정보지만 평문으로 돌릴 필요가 있는 경우 사용 대칭키 private key 하나로 암호화와 복호화 모두 실행함 AES AES 표준은 AES-128, AES-192, AES-256이며, 뒤에 붙은 숫자는 키의 길이(bit)를 의미 주로 AES-128의 개선된 버젼인 AES-256을 사용 미국 정보가 기밀문서를 암호화했을 정도로 신뢰도가 높은 알고리즘으로, 사람들은 키가 없으면 해독하는 것이 불가능하다고 이야기함 신뢰도가 높고, 속도가 빠름 private key가 유출될 경우, 모든 정보가 노출됨 비대칭키 public key로 암호화, private key로 복호화 함 RSA 소인수분해를 이용한 알고..
[Spring Boot] Swagger 3.x 적용 및 접속 Swagger OAS(Open Api Specification)을 위한 프레임워크 API 문서화를 쉽게 할 수 있도록 도와줌 파라미터를 넣어 실제로 어떤 응답이 오는지 테스트 가능 OpenAPI를 구현하기 위한 도구 세트 Open API RESTful API 설계를 위한 업계 표준 사양 Spring Boot에 Swagger 적용하기 1. gradle dependency 추가 - build.gradle dependencies { implementation 'io.springfox:springfox-boot-starter:3.0.0' implementation 'io.springfox:springfox-swagger-ui:3.0.0' } 2. Swagger Config 설정 @Configuration pub..
[Spring Boot] Jackson과 Gson Jackson Gson 공통점 Java에 대한 JSON 데이터 바인딩을 지원하는 완전한 라이브러리 차이점 Spring Framework에 내장됨 라이브러리를 수동으로 추가해야 함 Json 뿐만 아니라 XML과 YAML도 지원 속도가 빠르고 유연하여, 고용량의 데이터를 파싱할 때 좋음 비교적 가벼움 직렬화 json -> java object (new ObjectMapper()).writeValueAsString(java_object); (new Gson()).toJson(java_object); 역직렬화 java object -> json (new ObjectMapper()).readValue(json_data, java_object.class); (new Gson()).fromJson(json_data,..
[Spring Boot] H2 Database 설치 및 접속 H2 DB 자바 기반의 오픈소스 관계형 데이터 베이스 관리 시스템(RDBMS) Spring Boot가 지원하는 인메모리 데이터베이스 따로 설치가 필요 없으며, 어플리케이션을 재시작할 때마다 초기화 로컬 테스트 환경에서 많이 사용함 Spring Boot H2 DB 설치 및 접속하기 1. gradle dependency 추가 - build.gradle dependencies { runtimeOnly 'com.h2database:h2' } 2. application.properties 설정 추가 # h2 사용 여부 spring.h2.console.enabled=true # h2 console 접속 path spring.h2.console.path=/h2 # jpa sql 출력 여부 spring.jpa.show..
[Server] GCP Docker Nginx 설치 및 접속 Nginx (경량) 웹 서버 HTTP Web Server(클라이언트로 요청을 받고, 그에 맞는 정적 파일을 응답) Reverse Proxy Server(WAS 서버의 부하를 줄일 수 있는 로드 밸런서) Reverse Proxy 클라이언트로부터 받은 요청을 어플리케이션 서버에 전달하고, 어플리케이션 서버가 번환한 값을 다시 클라이언트에게 전달 Request와 Response를 중개 내부망의 서버 앞단에서 요청을 처리 Proxy: 클라이언트와 서버 통신 중간에서 대신 통신 해주는 서버 WAS 엡 어플리케이션 서버 웹 서버 + 웹 컨테이너 Docker Nginx 설치하기 1. Nginx images 검색하기 docker search nginx 2. Nginx images 다운로드 받기 docker pull n..
[Server] GCP Docker MariaDB 설치 및 외부 접속 MariaDB 설치 및 설정(외부 접속을 위한) 1. image 검색하기 docker search mysql 2. image 다운로드 받기 docker pull mariadb 3. mariadb 컨테이너 추가 및 구동하기 docker run --name mariadb -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootpwd mariadb --name mariadb: 컨테이너 이름을 mariadb로 지정 -d: 컨테이너를 백그라운드로 실행 -p 3306:3306: 호스트에서 3306 포트 접속 시 컨테이너 3306 포트로 포워딩 -e MYSQL_ROOT_PASSWORD=rootpwd: mariadb root password는 rootpwd mariadb: 다운로드 받은 이미지 이..