| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- JPQL
- JPA
- 쿠버네티스
- Spring Container
- kafka
- AWS
- Spring Data JPA
- @ComponentScan
- Spring
- DLQ
- redis
- JWT
- 서블릿 컨테이너
- CORS
- docker
- 스프링 부트
- Dead Letter Queue
- Routing Key
- DI
- securitycontextholderfilter
- mybatis
- Web
- docker compose
- dockerhub
- JdbcTemplate
- 페이징
- @Transactional
- 컨테이너
- MSA
- 지연 로딩
- Today
- Total
목록Spring (80)
look-forest
스프링 부트 등장 배경무거운 스프링 (스프링 설정 지옥)스프링 프레임워크가 확대되면서, 스프링 프로젝트를 시작할 때 필요한 설정이 점점 늘어났다.라이브러리 간 버전을 맞추는 것도 복잡했고, 등록해야 할 스프링 빈이 너무 많아졌다.초보자도 방대한 스프링 생태계에 대해 잘 알고 있어야 설정이 가능했다. ..어차피 Best Practice를 사용하는데, 자동화해주면 안될까? 이러한 문제점을 해결하기 위해 스프링 부트가 등장했다. Boot, 부팅의 의미최소한의 인간 개입으로 시작하고 완전히 작동하는 것을 의미어떤 일을 시작하기 위해 필요한 모든 준비를 마친다는 의미→ 시작을 위한 복잡한 설정은 스프링 부트가 해결해줘, 쉽고 빠르게 스프링 애플리케이션을 시작할 수 있게! 스프링 부트스프링을 편리하게 사용할 수..
CORS(Cross-Origin Resource Sharing)란?웹 브라우저가 다른 도메인 간의 리소스 요청을 안전하게 처리할 수 있도록 돕는 메커니즘이다.CORS는 웹 애플리케이션이 브라우저에서 자바스크립트를 통해 다른 도메인에서 리소스를 요청할 때, 해당 요청이 허용될지 여부를 서버 측에서 결정할 수 있도록 한다. ※ 왜 백엔드 서버 측에서 결정할까? 왜 설정을 서버에다 할까? - 클라이언트 측(브라우저) 자바스크립트 코드에 설정된 CORS 정책은 클라이언트 소스 코드를 수정하는 것으로 우회할 수 있다. - 서버 측에서 CORS 설정을 관리하면, 서버의 데이터를 신뢰할 수 있는 출처에만 제공하기 위해 합법적인 요청인지 확인해 데이터 보안이 가능하며 접근 허용 정책을 중앙에서 통제할 수 있다.- 그렇..
JDBC Java DB 연결 표준 인터페이스DataSource : 커넥션을 얻는 표준 인터페이스DriverManager : 라이브러리에 있는 드라이버를 보고 연결 try.ConnectionPool : 미리 연결 획득. 커넥션 풀에 들어있는 커넥션은 DB와 연결되어 있는 상태.트랜잭션커넥션이 생성되면 세션이 생성되는데, 이 세션에서 트랜잭션을 수행. 트랜잭션은 서비스 계층에서 시작해야 한다.같은 커넥션을 유지해야 같은 세션을 사용할 수 있다.Connection con = dataSource.getConnection();try { con.setAutoCommit(false); //트랜잭션 시작 /*비즈니스 로직*/ con.commit; //성공 시 커밋} catch (Exception e) ..
앞서 네이버와 구글이 제공하는 OAuth2 규격에 맞춰 클라이언트가 되어 보았다. 이번엔 우리가 직접 OAuth2 서비스를 제공하는 와 를 구축해보자. OAuth2 client를 이용함에 있어 인가/리소스 서버의 로직과 구조를 이해하는 것이 목적이므로 상세 코드는 다루지 않겠다. 구현 프로젝트1. OAuth2 인가 서버 (네이버/구글의 OAuth2 로그인 제공 서버와 동일 개념)2. OAuth2 리소스 서버 (인가 서버에서 JWT를 발급 받은 후 유저의 데이터를 받는 부분)3. OAuth2 클라이언트 (우리가 구현한 OAuth2 인가/리소스 서버의 인증 서비스를 사용할 제 3자 플랫폼 역할)OAuth2 인가 서버동작 흐름1. 세션 기반 스프링 시큐리티 로그인 기능 (like 네이버 자체의 로그인/회원가..
OAuth2.0 클라이언트와 스프링 시큐리티 6 프레임워크를 활용하여, 신뢰할 수 있는 외부 사이트(구글, 네이버)로 부터 인증을 받고, 전달 받은 유저 데이터를 활용하여 JWT를 발급하고 인가를 진행하는 방법. ※ 프로젝트 컨셉 - OAuth2 클라이언트 JWT방식을 구현하기 위한 가장 기본적인 뼈대 코드- 프론트/백엔드 서버가 나눠진 상황 가정 - OAuth2.0 코드 방식 인증을 활용 - 인증 후 발급된 정보로 JWT를 발급, JWT는 단일 토큰으로 진행JWT 방식에서 OAuth2 클라이언트 구성시 고민점JWT 방식에서는 로그인(인증)이 성공하면 JWT 발급 문제와 웹/하이브리드/네이티브앱별 특징에 의해 OAuth2 Code Grant 방식 동작의 책임을 프론트엔드 측에 둘 것인지 백엔드 측에 둘 ..
OAuth2.0 클라이언트와 스프링 시큐리티 6 프레임워크를 활용하여, 신뢰할 수 있는 외부 사이트(구글, 네이버)로 부터 인증을 받고, 전달 받은 유저 데이터를 활용하여 세션을 만들고 인가를 진행하는 방법 학습. 여러 인증 방식이 있지만, 본 프로젝트에서는 Authorization Code Grant Type 기준으로 진행한다. 필수 의존성Spring SecurityOAuth2 ClientOAuth2 구성 요소와 인증 방식Resource Owner : 사용자보호된 리소스에 대한 접근 권한을 부여할 수 있는 주체Client : 우리 시스템Resource Owner를 대신하여 보호된 리소스 요청을 수행하여, Resource Owner의 승인을 받은 애플리케이션Authorization Server : 네이버..
단일 JWT 발급을 넘어, 더 높은 수준의 보안을 위한 JWT 구현 방법을 알아보자.보안을 위한 JWT의 진화단일 토큰 사용의 문제점JWT 탈취 위험1. 로그인 성공 시 JWT 발급 : 서버 → 클라이언트2. 권한이 필요한 모든 요청에 JWT 전송 : 클라이언트 → 서버 JWT는 수 많은 요청을 위해 클라이언트의 JS 코드로 HTTP 통신을 통해 서버로 전달된다. 이 과정에서 해커는 클라이언트 측에서 XSS를 이용하거나 HTTP 통신을 가로채 토큰을 탈취할 수 있다.XSS(Cross-Site Scripting) : JS와 같은 악성 코드를 삽입하여 브라우저에서 실행되도록 공격.쿠키, 세션 등 탈취 가능. 서버에서 쿠키 설정 시 httpOnly 속성을 추가하면 쿠키를 JS로 접근할 수 없게 설정.CSRF(..
JWT 방식으로 인증을 진행하는 스프링 시큐리티 구현 방법을 알아보자.1. JWT에 대하여2. JWT 방식 스프링 시큐리티 구현3. CORS에 대하여JWT란JWT(JSON Web Token)는 웹, 모바일 애플리케이션에서 인증과 권한 부여를 위해 자주 사용되는 JSON 기반의 토큰. JWT 구성헤더(Header): JWT의 유형과 해싱 알고리즘을 지정.페이로드(Payload): 사용자 정보나 추가적인 데이터를 담고 있다. (사용자의 ID, 역할(role), 토큰의 유효기간 등)서명(Signature): 헤더와 페이로드를 합친 후 지정한 비밀 키를 이용해 서명하여 변조 방지를 위해 사용됨(검증용)※ JWT 암호화 방식은 크게 단방향/양방향이 있고, 양방향에는 대칭키/비대칭키 방식이 있다. JWT의 특징내부..