본문 바로가기

Web

(50)
[Web] 1-2 JWT 구현 https://freewebdev.tistory.com/174 [Web] 1-1 JWT 이론JWT란 무엇인가?- 서버가 클라이언트에게 "이 사용자는 누구다"라는 정보를 담아 서명해서 주는 토큰이다.- 이후 요청마다 서버는 세션 저장 없이 토큰만 검증한다.(Stateless 인증 방식) 1. JWT를 왜freewebdev.tistory.com 위에서 작성한 이론을 기반으로 구현을 하겠습니다. 구현한 내용은 아래 GitHub에 작성되어 있습니다. https://github.com/oss0202/oss-secure-jwt/tree/master
[Web] 1-1 JWT 이론 JWT란 무엇인가?- 서버가 클라이언트에게 "이 사용자는 누구다"라는 정보를 담아 서명해서 주는 토큰이다.- 이후 요청마다 서버는 세션 저장 없이 토큰만 검증한다.(Stateless 인증 방식) 1. JWT를 왜 쓰는가?1) 기존 세션 방식Client -> 로그인Server -> 세션 생성 + DB/메모리 저장Client -> JESSIONID 쿠키 전송Server -> 세션 조회문제서버 확장 시 세션 공유 필요Redis / Sticky Session 필요모바일/API 기반 서비스에 불리2. JWT 방식Client -> 로그인Server -> JWT 발급Client -> Authorizaion 헤더에 JWT 포함Server -> 서명 검증 -> 만료 확인장점서버가 상태를 안 가짐(Stateless)MSA..
[Spring] AOP와 @Transactional의 동작원리 출처 : https://velog.io/@ann0905/AOP%EC%99%80-Transactional%EC%9D%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC [Spring] AOP와 @Transactional의 동작 원리 오늘은 @Transactional의 동작 원리를 AOP와 함께 좀 더 자세하게 조사해보려고 한다.여기서 다루는 내용은 다음과 같다.AOP란 무엇이며 왜 사용하는가Spring AOP는 왜 프록시를 사용하는가@Transactional은 velog.io @Transactional의 동작 원리 참고 링크: Proxy형태로 동작하는 JPA @Transactional 참고 링크: Spring AOP에서 Proxy란 ? 참고 링크: [Spring] @Transactio..
[Web] Java Testing Framework - Unit Test(JUnit) 들어가면서 1. TDD 테스트 주도 개발(Test-Driven Development, TDD)은 매우 짧은 개발 사이클을 반복하는 소프트퀘어 개발 프로세스중 하나입니다. 쉽게 얘기하면 개발을 하는데 있어서 테스트가 주가 되어 개발한다는 의미 입니다. 제품의 테스트가 좋을수록 제품의 품질이 향상 됩니다. 그래서 테스트는 중요하다고 생각합니다. 기존 개발 프로세스 설계 개발(코드 작성) 테스트(코드 작성) TDD 프로세스 설계 테스트(코드 작성) 개발(코드 작성) TDD 방법론을 사용할 경우 아래의 같은 장점, 단점이 있습니다. 장점 객체지향적인 코드 개발 - 모든 코드가 재사용 성을 기반으로 작성하기 때문 설계 수정 시간의 단축 - 테스트 코드를 먼저작성하기 떄문에 설계의 구조적 문제점을 바로 찾음 디버깅..
[WEB기초] REST API vs GraphQL 차이점 GraphQL / RESTful GraphQL 서로 다른 모양의 다양한 요청들에 대해 응답할 수 있어야 할 떄 대부분의 요청이 CRUD에 해당할 때 RESTful HTTP, HTTPs에 의한 Cacheing을 잘 사용하고 싶을 때 File 전송 등 단순한 Text로 처리되지 않는 요청들이 있을 때 요청의 구조가 정해져 있을 때 아래 글 요약 REST에서는 Resource에 대한 형태 정의와 데이터 요청 방법이 연결되어 있지만, GraphQL에서는 Resource에 대한 형태 정의와 데이터 요청이 완전히 분리되어 있습니다. REST에서는 Resource의 크기와 형태를 서버에서 결정하지만, GraphQL에서는 Resource에 대한 정보만 정의하고, 필요한 크기와 형태는 client단에서 요청 시 결정합니..
[WEB기초] 싱글톤 패턴(Singleton Pattern) 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환한다. 인스턴스가 필요 할 때 똑같은 인스턴스를 만들어 내는 것이 아니라, 동일(기존) 인스턴스를 사용하게 한다. 싱글톤 패턴 쓰는 이유 고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있다. 싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다. DBCP(Database Connection Pool)처럼 공통된 객체를 여러개 생성해서 사용해..
[WEB기초] Spring 생성자 주입을 써야하는 이유 생성자 주입을 사용해야하는 이유 객체의 불변성 확보 수정자 주입이나 일반 메소드 주입을 사용하면, 불필요하게 수정의 가능성을 열어두게 된다. SOLID 5원칙 중 OCP 원칙을 지키며 객체의 불변성을 확보할 수 있다. 테스트 코드의 작성 테스트 코드를 순수 자바코드로 작성할 수 있다. 컴파일 시점에 객체를 주입받아 테스트 코드를 작성할수 있으며, 주입하는 객체가 누락된 경우 컴파일 시점에 오류를 발경할 수 있다. 필드 주입의 경우 순수 자바코드로 단위테스트를 작성하는 것이 불가능하다 final 키워드 작성 및 Lombok과의 결합 final 키워드를 사용할 수 있고, Lombok과의 결합을 통해 코드를 간결하게 작성할 수 있다. 순환 참조 에러 방지 순환 참조 문제를 애플리케이션 구동( 객체의 생성 ) ..
[모든 개발자를 위한 HTTP 웹 기본 지식] 24.HTTP 최종 마무리 학습 내용 정리 인터넷 네트워크 인터넷 통신 IP( 인터넷 프로토콜 ) TCP, UDP PORT DNS URI와 웹 브라우저 요청 흐름 URI 웹 브라우저 요청 흐름 HTTP 모든 것이 HTTP 클라이언트 서버 구조 Stateful, Stateless 비 연결성( connectionless ) HTTP 메시지 HTTP 메서드 HTTP API를 만들어보자 -> HTTP API 만들기 첫 시도 HTTP 메서드 - GET, POST HTTP 메서드 - PUT, PATCH, DELETE HTTP 메서드의 속성 HTTP 메서드 활용 클라이언트에서 서버로 데이터 전송 HTTP API 설계 예시 HTTP 상태코드 HTTP 상재코드 소개 2xx - 성공 3xx - 리다이렉션1 - 영구 리다이렉션 3xx - 리다이렉션2..