Spring 17

[Security]JWT 토큰을 이용한 시큐리티 인증 처리

스프링 시큐리티와 JWT 토큰이 무엇인지에 대한 배경지식은 아래 게시글에 작성해두었다. https://dev-uu.tistory.com/93 [Security]Spring Security와 JWT1. 스프링 시큐리티란? 스프링 시큐리티는 사용자의 인증, 인가와 관련해 스프링 프레임 워크에서 제공하는 하위 프로젝트를 의미한다.앞선 정의에서 인증과 인가란 아래와 같이 정의할 수 있dev-uu.tistory.com 1. 프로젝트 환경- 테스트를 위한 기본적인 프로젝트 환경은 아래와 같이 진행하였다. 1) SpringBoot 3.4.02) SpringSecurity 6.0.0 이상 버전3) JDK 21 2. 프로젝트 생성스프링 부트 프로젝트 생성 사이트(https://start.spring.io/)에 접속해 ..

Spring 2024.12.13

[Security]Spring Security와 JWT

1. 스프링 시큐리티란? 스프링 시큐리티는 사용자의 인증, 인가와 관련해 스프링 프레임 워크에서 제공하는 하위 프로젝트를 의미한다.앞선 정의에서 인증과 인가란 아래와 같이 정의할 수 있다.인증: 사용자가 누구인지 확인인가: 인증을 통해 신원이 보장된 사용자가 리소스에 접근할 때, 접근 권한이 있는지를 확인  2. 스프링 시큐리티를 이용한 인증 - 스프링 시큐리티를 이용할 경우 서블릿 필터를 기반으로 작동하며, DelegatingFilterProxy를 이용해 시큐리티가 제공하는 FilterChainProxy를 필터체인에 등록하게 된다. 이후 FilterChainProxy는 SecurityFilterChain을 통해 인증과 관련된 여러 필터체인들을 선택해 이용하도록 한다.  - 별도의 설정이 없다면 Filt..

Spring 2024.12.09

[메타코딩] 13강. 스프링 부트의 동작원리?

6. 요청 주소에 따른 적적할 컨트롤러로 요청(Handler Mapping) : 해당 주소의 요청이 오면 적절한 컨트롤러의 함수 찾아 실행해준다. 7. 응답 : 요청에 따라 html파일 혹은 데이터를 응답하게 되는데, html 파일을 응답할 경우 ViewResolver(view 파일이 들어있는 경로를 prefix로써 자동으로 붙여준다.)가 관여하게 되고, 데이터를 응답하는 경우 MessageConverter가 작동하게 되는데 메시지 컨버팅 시 기본 전략은 json이다. 8. 스프링의 전체적인 실행 흐름

Spring 2023.10.02

[메타코딩] 12강. 스프링 부트의 동작원리?

5. 스프링 컨테이너 : DispatcherServlet에 의해 생성되어지는 객체들은 어디서 관리될까? 5.1 ApplicationContext : 생성된 객체들은 ApplicationContext 에 등록되고 이를 IoC(제어의 역전)라고 한다. 앞선 글에서 알 수 있듯이 개발자가 직접 new를 통해 객체를 생성하게 되면 해당 객체를 가르키는 레퍼런스 변수를 관리하기 어렵게 된다. 그래서 스프링은 IoC를 통해 객체들을 직접 메모리에 올리고 관리한다.이로 인해 개발자는 객체에 대한 레퍼런스 변수를 직접 관리할 필요가 없어지고, 생성된 객체들을 필요할 때 DI(의존성 주입)해 사용하면 된다. 즉, 이는 필요한 곳에서 ApplicationContext에 접근해 객체를 가져올 수 있다는 의미이다. Appli..

Spring 2023.10.02

[메타코딩] 11강. 스프링 부트의 동작원리?

4. FrontController 패턴 : 최초 앞단에서 request 요청을 받아 필요한 클래스에 넘겨준다.왜? web.xml에 모든 내용을 정의하기가 어렵기 때문이다. : 웹에서 request가 들어오면, 톰캣은 요청을 받아, request/response 객체를 만들어 응답을 처리하도록 한다. 이러한 방식은 BufferedReader/BufferedWriter 형태로 주고 받았던 데이터들을 객체화 시키므로써, 관련 내장함수를 이용할 수 있게 해준다. : 이 때 새로운 요청이 생기기 때문에 request와 response가 새롭게 new 될 수 있고, 이로 인해 RequestDispatcher가 필요하게 된다. : RequestDispatcher는 필요한 클래스 요청이 도달했을 때, FrontCont..

Spring 2023.09.25

[메타코딩] 10강. 스프링 부트의 동작원리?

3. web.xml 3.1 web.xml의 역할 : web.xml은 웹 에서 들어오는 요청을 어떻게 처리할 지 설정해놓은 일종의 설정파일이다.web.xml에서 처리하는 일들은 아래와 같다. ServletContext의 초기 파라미터 Session의 유효시간 설정 Servlet/JSP에 대한 정의 Servlet/JSP 매핑 Mime Type 매핑 Welcome File list Error Pages 처리 리스터/필터 설정 : 특정 요청에 대한 처리만 수행 보안

Spring 2023.09.24

[메타코딩] 9강. 스프링 부트의 동작원리?

2. 서블릿 컨테이너 : 서블릿이란 java로 웹을 동작시킬 수 있게 만드는 것을 의미한다. 서블릿 컨테이너는 이러한 자원을 모아둔 컨테이너를 의미한다. : 정적인 자원(.html, .css, .png)에 대한 요청은 무조건 웹 서버가 동작하고, 톰캣은 실행되지 않는다. **URL: 자원에 접근할 때의 주소 접근 방식(ex>http://naver.com/a.png), URI: 식별자를 통해 주소 접근 방식(ex>http://naver.com/picture/a) : 스프링은 정적인 자원에 대한 요청 방식(URL 접근방식)을 모두 막아두었기 때문에, 특정한 파일에 대한 요청을 할 수가 없다.즉, 요청 시에 무조건 java를 거쳐야 한다.결국, 톰캣을 이용해 자원을 접근하게 된다. : Request가 동시에 ..

Spring 2023.09.21

[메타코딩] 8강. 스프링 부트의 동작원리?

1. 스프링은 내장 톰캣을 지닌다. : 톰캣을 따로 설치할 필요없이 바로 실행이 가능하다. 1.1 웹 서버 : 클라이언트가 정적인(static) 자원(ex>.html..)을 요청할 경우, 이에 대한 처리를 해주는 서버 : 정적인 데이터를 주고 받으므로 각 클라이언트와 소켓 통신을 하게 된다. 1.2 톰캣 : 클라이언트로부터 동적인 자원(ex>.jsp..)을 요청받는 경우, 웹 서버는 권한을 톰캣에 넘겨주게 된다. : 권한을 넘겨받은 톰캣은 해당 요청을 수행하기 위해 자원을 컴파일 하고, 이를 HTML에 덮어씌운 후 다시 웹 서버에 권한을 이관한다. : 웹 서버는 이관받은 파일을 response하여 클라이언트에게 전달한다. 1.3 웹 브라우저 : 통신을 통해 .html,javaScript, css. avi..

Spring 2023.09.21

[메타코딩] 7강. 스프링 부트의 동작원리?

1. 소켓통신이란? - socket: 운영체제가 가지고 있는 것.프로세스가 드넓은 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 하는 것을 의미한다. : A라는 클라이언트가 C에 통신을 요청하게 되면, 메인 소켓이 이 요청을 받아 이 통신을 처리할 소켓과 쓰레드를 추가적으로 생성해 통신을 할당한다. 이후 A와C의 연결은 끊기고, 메인 소켓은 B의 연결요청을 받아 또 다시 새로운 소켓과 쓰레드를 생성해 통신을 할당할 수 있게 된다. 위와 같은 작업을 반복해 소켓을 통해 통신을 하는 방식을 소켓 통신이라고 한다. : 소켓통신은 연결된 통신이 자동적으로 끊어지지 않고, 유지되기 때문에 통신을 요청하는 수가 많아질 수록 부하가 비례해서 증가하게 된다. 2. ht..

Spring 2023.09.20

[메타코딩] 6강. JPA(Java Persistence API)란?

6. JPA는 OOP 관점에서 모델링을 할 수 있게 해준다.(상속, 콤포지션(결합), 연관관계) : JPA를 이용해 JAVA 객체내에서 다른 객체를 자료형으로 사용할 경우 결합이 가능하다. class car{ int id; String name; String color; Engine engine; } class Engine{ int id; int power; } : 위와 같이 2개의 객체가 있을 때, car와 engine은 결합관계라고 하며, car를 ORM 할 경우 아래와 같은 데이터 베이스 테이블들이 생성된다. : JPA를 이용할 경우, 객체간 상속이 가능해진다. class car extends EntityDate{ int id; String name; String color; Engine engin..

Spring 2023.09.15