🔥스파르타 TIL (Spring) 23

Spring Security + JWT 로그인 구현하기

Spring Security 란?스프링 기반의 애플리케이션의 보안을 담당하는 프레임워크이다.필터 기반으로 동작하기 때문에 스프링 MVC와 분리되어 관리 및 동작한다. Spring에서 모든 호출은 DispatcherServlet을 통과하게 되고seungg8361.tistory.comController에서 @PostMapping("/login")을 처리하지 않고 filter에서 로그인을 처리해 보자. 먼저 Spring Security 관련 작업을 진행해 보자// Spring Security에서 사용자의 상세 정보를 담는 클래스 -> 실제 인증된 사용자의 정보를 담고있다.public class UserDetailsImpl implements UserDetails { private final User us..

RestTemplate란?

RESTful 웹 서비스를 호출하고 응답을 처리하기 위한 템플릿 클래스로, HTTP 요청 및 응답을 보다 쉽게 주고받을 수 있도록 도와준다. HTTP GET 메서드   getForObject(url, responseType)   getForEntity(url, responseType)HTTP POST 메서드   postForObject(url, request, responseType)   postForEntity(url, request, responseType)HTTP PUT 메서드   put(url, request)HTTP DELETE 메서드   delete(url)HTTP HEAD 메서드   headForHeaders(url)HTTP OPTIONS 메서드   optionsForAllow(url)HTT..

JWT 활용하기 (2) - 회원 가입, 로그인 기능 만들기

회원 가입 기능을 구현하기에 앞서 JWT 관련해서 간단한 설정들을 알아보자  JWT 활용하기 (1)인증(Authentication)과 인가(Authorization) 란? 인증(Authentication)과 인가(Authorization) 란?인증 ▼해당 유저가 실제 유저인지 인증하는 개념지문인식, 로그인 등 실제 유저가 맞는지 확인하는 장치인가 ▼seungg8361.tistory.com 1. Entity 클래스 만들기@Entity@Getter@Setter@NoArgsConstructor // 기본 생성자 생성@Table(name="users") // 테이블 이름public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY..

Spring Security 란?

스프링 기반의 애플리케이션의 보안을 담당하는 프레임워크이다.필터 기반으로 동작하기 때문에 스프링 MVC와 분리되어 관리 및 동작한다. Spring에서 모든 호출은 DispatcherServlet을 통과하게 되고 이후에 각 요청을 담당하는 Controller로 분배된다. 이때 DispatcherServlet 이전 단계가 필터이다.Spring Security는 FilterChainProxy를 통해서 상세로직을 구현하고 있다.필터(Filter) 란? 필터(Filter) 란?웹 애플리케이션에서 관리되는 영역으로 클라이언트에서 오는 요청과 응답에 대해서 최초, 최종 단계에 위치한다.요청과 응답에 정보를 변경하거나 부가적인 기능을 추가할 수 있다. ex) Logging,seungg8361.tistory.com  b..

필터(Filter) 란?

웹 애플리케이션에서 관리되는 영역으로 클라이언트에서 오는 요청과 응답에 대해서 최초, 최종 단계에 위치한다.요청과 응답에 정보를 변경하거나 부가적인 기능을 추가할 수 있다. ex) Logging, 보안, 인증·인가 관련 Filter 0 => Logging용 필터 Filter 1 => 인증·인가용 필터라고 가정해 보자Logging용 필터 ▼public class LoggingFilter implements Filter { @Override // Filter를 implements 한 뒤 사용 가능한 doFilter 메서드, FilterChain은 filter를 이동시키기 위해 사용 public void doFilter(ServletRequest request, ServletResponse r..

JWT 활용하기 (1)

인증(Authentication)과 인가(Authorization) 란? 인증(Authentication)과 인가(Authorization) 란?인증 ▼해당 유저가 실제 유저인지 인증하는 개념지문인식, 로그인 등 실제 유저가 맞는지 확인하는 장치인가 ▼해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념관리자 페이seungg8361.tistory.com JWT를 사용하기 전에 의존성과 설정을  추가해 주자 build.gradle ▼compileOnly group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5'runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.5'ru..

인증(Authentication)과 인가(Authorization) 란?

인증 ▼해당 유저가 실제 유저인지 인증하는 개념지문인식, 로그인 등 실제 유저가 맞는지 확인하는 장치인가 ▼해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념관리자 페이지, 관리자 권한 클라이언트 - 서버 ▼HTTP 프로토콜로 통신을 한다.리소스를 절약하기 위해서 서버와 클라이언트가 연결되어 있지 않는 비연결성으로 이루어져 있다.서버가 클라이언트의 상태를 저장하지 않는 무상태로 이루어져 있다.  이러한 환경에서 유저가 인증되었다는 정보를 유지시키기 위해서 어떻게 해야 할까?  쿠키와 세션 인증 ▼사용자가 로그인을 하면 DB에서 데이터를 확인하고 결과를 세션 저장소에 해당 유저가 로그인되었다는 정보를 저장한다.세션 저장소에서는 Session ID를 발급하고 전달하면 브라우저에서는 Session..

Bean 이란?

Spring 프레임워크가 관리하는 객체를 의미한다. 이 객체들은 애플리케이션 콘텍스트 내에서 생성되고, 필요할 때마다 주입된다.@ComponentScan에 의해서 Component가 자동으로 Scan 되어 해당 클래스를 Bean으로 등록해 준다.  Bean을 왜 수동으로 등록할까?기술 지원 Bean : 기술적인 문제나 공통적인 관심사를 처리할 때 사용하는 객체들은 수동으로 등록하는 게 좋다.비즈니스 로직 Bean 보다 수가 적기 때문에 수동으로 등록하기 좋다.문제가 발생했을 때 해당 문제의 위치를 정확하게 파악하기 쉽다. Bean 수동 등록 예시@Configuration // Spring IoC 컨테이너에 Bean으로 저장되게 함public class PasswordConfig { // passwordC..

JPA 란? (2) - Spring Data JPA

JPA를 쉽게 사용할 수 있게 만들어 놓은 하나의 모듈이다.  JpaRepository ▼Spring 서버가 뜰 때 JpaRepository 인터페이스를 상속받은 인터페이스가 자동으로 스캔해당 인터페이스의 정보를 토대로 자동으로 SimpleJpaRepository 클래스를 생성하고 Bean으로 등록                                               ↑                                              JpaRepositoryImplementation      ↑SimpleJpaRepository  JpaRepository 을 상속받은 인터페이스 ▼/* Spring Data JPA에 의해 자동으로 Bean 등록 Enti..

JPA 란? (1)

애플리케이션에서 데이터를 DB에 저장해서 관리하기 위해 직접 Table을 만들고 SQL을 작성한 뒤, JDBC를 사용해서 직접 실행해서 SQL의 결과를 객체로 직접 만들어야 했었다. 이러한 경우 SQL에 의존적이라 변경에 취약하다는 단점이 있다.이러한 단점을 보안하기 위해 ORM을 사용할 수 있다.  ORM (Object Relation Mapping) ▼반복적이고 번거로운 SQL 작업을 줄여주기 위해 사용자바의 클래스와 DB의 데이터를 직접 매핑할 수 있다JPA는 자바 ORM의 표준 명세이다Hibernate ▼ 자바 언어를 위한 ORM 프레임워크이고 JPA의 구현체JPA 인터페이스를 구현하고 내부적으로 JDBC API를 사용한다.  JPA는 애플리케이션과 JDBC 사이에서 동작한다.DB 연결과정을 직접..