일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- web server
- 스프링
- 웹 서버
- 스프링 시큐리티
- spring boot
- JPA
- 스프링 부트
- virtualization
- Spring
- 도커
- Java
- ORM
- 영속성 컨텍스트
- vm
- 백엔드
- computer science
- CI/CD
- 데이터베이스
- 컨테이너
- spring batch
- 배포
- 스프링 배치
- Container
- 가상화
- mysql
- HTTP
- 자바
- CS
- spring cloud
- Spring Security
- Today
- Total
목록Back-End/Spring (36)
개발 일기

혹시나 틀린 부분이나 더 나은 코드가 있다면 댓글로 의견 남겨주시면 정말 감사할 것 같습니다!!Spring Boot 프로젝트를 하면서 OAuth2.0과 JWT 토큰 기반 인증 인가를 구현해봤다.개발자 유미님의 유투브 강의와 깃허브의 여러 코드 그리고 구글링을 모두 반영하여 구현했다.이전에 Express활용하여 개발을 할때 OAuth2 클라이언트 로그인에 대해서 모든 책임(redirect_url)을 백엔드가 가질 경우 JWT 발급한 것을 어떻게 프론트측에서 받게 만들지 막막했었다. 그래서 해답을 찾이 못하고 책임을 나눠서 개발했더니 위의 문제를 해결할 수 있었다.그러나 카카오에 누군가 질문을 한 것을 찾아보거나 현업자들의 얘기를 들어보니 백엔드에서 OAuth2 로그인에 대한 모든 책임을 갖는 것을 지향한다..

Spring Security Authentication ArchitectureHTTP 요청 수신: 사용자가 로그인 정보와 함께 HTTP 인증 요청을 보낸다유저 정보 기반 인증 토큰 생성: AuthenticationFilter가 요청을 가로채고, 사용자가 제공한 정보를 기반으로 UsernamePasswordAuthenticationToken이라는 인증용 객체를 생성한다.Filter를 통한 AuthenticationToken 전달: 생성된 AuthenticationToken은 Filter를 통해 AuthenticationManager로 전달된다.AuthenticationProvider 목록으로 인증 시도: AuthenticationManager는 등록된 AuthenticationProvider들을 조회하며 ..

이전 게시글에 이어 SecurityFilterChain의 내부 구조에 대해 정리해보겠다. 우선 SecurityConfig에 @EnableWebSecurity(debug = true)를 달아놓고 요청을 보내보면 다음과 같이 로그가 찍힌다. 실제로 통과하는 로그가 찍히는 것이다. 왼쪽은 SecurityFilterChain을 지정해놓지 않고 돌렸을때 오른쪽은 선언 후 돌렸을 때이다.즉, 디폴트로 저러한 필터들이 동작하고 있다는 것이다. 기본으로 설정된 필터들 중 쓰고 싶지 않은 것은 비활성화 시키고 쓰고 싶은 것 중 디폴트가 아닌 필터는 직접 활성화 시켜야한다. 앞으로 실제로 사용할때마다 하나씩 정리해보겠다.DisableEncodeUrlFilterURL로 간주되지 않는 부분을 포함하지 않도록 설정WebAsyn..

기존에는 Express로만 개발을 해봤기 때문에 인증 인가를 도와주는 프레임워크라는 것이 따로 없었다.그러나 이번에 스프링을 공부를 해보니 인증 인가를 도와주는 스프링 시큐리티라는 프레임워크를 제공했다.그래서 스프링 시큐리티가 무엇인지, 어떻게 동작하는건지에 대해 이해 후 적용해보기 위해 정리하게 됏다.Spring SecuritySpring 공식 문서를 보면 다음과 같이 쓰여져 있다."Spring Security is a framework that provides authentication, authorization, and protection against common attacks.."즉, 인증, 권한 부여, 그리고 일반적인 공격으로부터의 보호를 제공하는 프레임워크라고 한다. 이는 Filter를 통해..

공부하게된 계기스프링 시큐리티를 공부할때 인증, 인가 그리고 XSS, CSRF와 같은 공격을 방어해주는 기능을 필터를 통해 처리한다고 했는데 이 필터가 무엇인지 잘 알지 못했고 대충 검색해보니 필터와 함께 인터셉터라는 개념이 함께 나와서 정리해보게 됐다. 필터는 서블릿, 인터셉터는 스프링이 제공한다.필터와 인터셉터 개념을 도입한 이유그렇다면 왜 필터라는 개념을 도입했을까? 바로 공통 관심사 때문이다.예를 들어서 로그인을 한 사람만 상품을 등록할 수 있어야 하고 상품 수정을 할때 해당 상품 등록자만 그 권한을 줘야 한다. 이럴때는 상품 관리의 모든 컨트롤러 로직에 공통으로 로그인 여부를 확인하면 된다. 예를들면 상품 등록 컨트롤러와 상품 관리 컨트롤러 등 모든 상품 관련 컨트롤러 마다 공통적으로 각각 로..

ServletCGI의 등장처음 웹 프로그래밍에서 웹 서버는 정적 데이터만 전달하면 됐다. 누가 접속하던지에 관계 없이 똑같이 정적인 데이터를 기반으로 뷰를 렌더링하면 됐다. 즉, 웹 서버는 사용자(요청)에 맞게 동적인 데이터를 처리할 필요가 없었다.그러나 웹 페이지에서 동적인 컨텐츠의 제공의 필요성이 생기게 됐다. 이를 위해 CGI라는 것이 나오게 된다. CGI의 문제점 및 Servlet의 등장동적 데이터를 처리하는 CGI (Common Gateway Interface)는 이름에서 알 수 있듯이 인터페이스 이다. 인터페이스는 하나의 규약이라고도 한다. 구현체는 이 인터페이스를 기반으로 구현되어야 한다. 그래서 웹 서버(Apache)와 CGI 구현체(C, PHP 등) 사이의 규약을 CGI라고 할 수 있..

MVC란?MVC 패턴은 애플리케이션을 개발할 때 사용하는 디자인 패턴 중 하나이다.애플리케이션의 개발 영역을 MVC(Model, View, Controller)로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식이다.MVC 패턴을 도입하면서 UI 영역과 도메인(비즈니스 로직) 영역으로 구분되어 서로에게 영향을 주지 않으면서 개발과 유지보수가 가능하다.ModelModel은 애플리케이션의 데이터와 상태를 담당한다. 예를 들어, 사용자 정보를 저장하는 User 클래스가 Model에 해당합니다.Controller에서 사용자 입력(DTO)을 받아 User 객체를 생성하고, 이 객체를 View에 전달하여 화면에 표시할 수 있다.또한 Model에는 데이터베이스 연동을 위한 DAO(Data Access Object)..

전 게시글에서POJO를 달성하기 위한 3가지 스프링 핵심 특징인 IoC/DI, AOP, PSA 중 IoC/DI에 대해 알아봤었다. 이번 게시글에서는 나머지 AOP에 대해서 알아보자관점 지향 프로그래밍 (Aspect Oriented Programming - AOP)AOP 도입 배경( feat. 횡단 관심사)과 AOP 개념AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 횡단 관심사(cross-cutting concerns)를 다루는 프로그래밍 패러다임이다.이때 횡단 관심사란 여러 모듈이나 기능에서 공통적으로 나타나는 관심사를 말하며, 로깅, 보안, 트랜잭션 관리 등이 여기에 해당한다.AOP를 사용하면 이러한 공통된 로직을 핵심 비즈니스 로직에서 분리하여 관리할 수 있어 ..