Spring Security JWT 12 : 세션 정보
·
Spring/Spring Security - JWT
JWTFilter를 통과한 뒤 세션 확인@Controller@ResponseBodypublic class MainController { @GetMapping("/") public String mainP() { String name = SecurityContextHolder.getContext().getAuthentication().getName(); return "Main Controller : "+name; }}세션 현재 사용자 아이디SecurityContextHolder.getContext().getAuthentication().getName();세션 현재 사용자 roleAuthentication authentication = SecurityContextHol..
Spring Security JWT 11 : JWT 검증 필터
·
Spring/Spring Security - JWT
JWT 검증 필터스프링 시큐리티 filter chain에 요청에 담긴 JWT를 검증하기 위한 커스텀 필터를 등록해야 한다. 해당 필터를 통해 요청 헤더 Authorization 키에 JWT가 존재하는 경우 JWT를 검증하고 강제로 SecurityContextholder에 세션을 생성한다. (이 세션은 STATELESS 상태로 관리되기 때문에 해당 요청이 끝나면 소멸된다.)JWTFilter 구현JWTFilterpublic class JWTFilter extends OncePerRequestFilter { private final JWTUtil jwtUtil; public JWTFilter(JWTUtil jwtUtil) { this.jwtUtil = jwtUtil; } @O..
Spring Security JWT 10 : 로그인 성공 JWT 발급
·
Spring/Spring Security - JWT
로그인 성공7~9 강을 통해 로그인 로직, JWTUtil 클래스를 생성하였다. 이제 로그인이 성공했을 경우 JWT를 발급하기 위한 구현을 진행한다.JWTUtil 주입LoginFilter : JWTUtil 주입public class LoginFilter extends UsernamePasswordAuthenticationFilter { private final AuthenticationManager authenticationManager; //JWTUtil 주입 private final JWTUtil jwtUtil; public LoginFilter(AuthenticationManager authenticationManager, JWTUtil jwtUtil) { this.auth..
Spring Security JWT 9 : 발급 및 검증 클래스
·
Spring/Spring Security - JWT
JWT 발급과 검증로그인시 -> 성공 -> JWT 발급접근시 -> JWT 검증JWT에 관해 발급과 검증을 담당할 클래스가 필요하다. 따라서 JWTUtil이라는 클래스를 생성하여 JWT 발급, 검증 메소드를 작성한다.JWT생성 원리JWT.IO 공식 홈페이지https://jwt.io/ JWT.IOJSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.jwt.io문자열 형태가 있는데 . 을 기준으로 Header.Payload.Signature 구분 -> 외부에 데이터 전달. JWT는 Header.Payload.Signature 구조로 이루어져 있다. 각 요소는..
Spring Security JWT 8 : DB기반 로그인 검증 로직
·
Spring/Spring Security - JWT
DB 기반 로그인 검증이번에는 DB에서 AuthenticationManager까지 로직을 구현한다. 구현은 UserDetails, UserDetailsService, UserRepository의 회원 조회 메소드를 진행한다.UserRepositoryUserRepositorypackage com.example.springjwt.repository;import com.example.springjwt.entity.UserEntity;import org.springframework.data.jpa.repository.JpaRepository;public interface UserRepository extends JpaRepository { Boolean existsByUsername(String usern..
Spring Security JWT 7 : 로그인 필터 구현
·
Spring/Spring Security - JWT
자료스프링 시큐리티 필터 참고 자료https://docs.spring.io/spring-security/reference/servlet/architecture.html Architecture :: Spring SecurityThe Security Filters are inserted into the FilterChainProxy with the SecurityFilterChain API. Those filters can be used for a number of different purposes, like exploit protection,authentication, authorization, and more. The filters are executed in a specidocs.spring.io로그인..
Spring Security JWT 5 : DB 연결 및 Entity 작성
·
Spring/Spring Security - JWT
데이터베이스 종류와 ORM회원 정보를 저장하기 위한 데이터베이스는 MariaDB 엔진의 데이터베이스를 사용한다. 접근은 Spring Data JPA를 사용한다.데이터베이스 의존성 주석 해제목차 2번에서 진행했던 build.gradle의 Spring Data JPA 및 MariaDB Driver 의존성 주석을 해제한다.변수 설정DB 연결 설정 : application.properties# MariaDB settingspring.datasource.driver-class-name=org.mariadb.jdbc.Driverspring.datasource.url=jdbc:mariadb://localhost:3306/jwtspring.datasource.username=rootspring.datasource.pa..
Spring Security JWT 4 : POSTMAN 설치
·
Spring/Spring Security - JWT
API 서버와 요청 클라이언트API 서버는 웹 서버와 달리 서버측으로 요청을 보낼 수 있는 페이지가 존재하지 않고 엔드 포인트만 존재하기 때문에 요청을 보낼  API 클라이언트가 필요하다.POSTMAN공식 홈페이지 주소https://www.postman.com/downloads/ Download Postman | Get Started for FreeTry Postman for free! Join 35 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.www.postman.comPOSTMAN 호출
Spring Security JWT 3 : SecurityConfig 클래스
·
Spring/Spring Security - JWT
SecurityConfig 클래스 설명스프링 시큐리티의 인가 및 설정을 담당하는 클래스이다. Security Config 구현은 스프링 시큐리티의 세부 버전별로 많이 상이하다. (지금은 스프링 시큐리티 6.2.1 버전으로 구현) 스프링 시큐리티 시리즈 : 버전별 Security Config 구현 방법https://www.youtube.com/watch?v=NdRVhOccuOsSecurity Config 클래스 기본 요소 작성시큐리티 JWT 구현을 위한 Config 클래스의 일부분 작성.먼저 기본적인 설정만 진행하고 프로젝트를 진행하면서 커스텀 필터 요소들을 추가 구현 예정. SecurityConfigpackage com.example.springjwt.config;import org.springframe..
Spring Security JWT 2 : 프로젝트 생성 및 의존성 추가
·
Spring/Spring Security - JWT
의존성필수 의존성LombokSpring WebSpring SecurityS1pring Data JPAMySQL Driver데이터베이스 의존성 주석 처리임시로 주석 처리 진행 (스프링 부트에서 데이터베이스 의존성을 추가한 뒤 연결을 진행하지 않을 경우 런타임 에러 발생)JWT 필수 의존성JWT 토큰을 생성하고 관리하기 위해 JWT 의존성을 필수적으로 설정해야 한다.설정은 build.gradle을 통해 진행하며 이때 버전을 선택하여 적용. JWT 0.12.3 버전 : build.gradledependencies { implementation 'io.jsonwebtoken:jjwt-api:0.12.3' implementation 'io.jsonwebtoken:jjwt-impl:0.12.3' i..