JAVA/Spring Security JWT

main 홈페이지가 있고 admin 홈페이지가 있다고 가정하자.admin 홈페이지에 접근하기 위해선 관리자 역할이 필요한데,현재 내가 가지고 있는 역할이 admin인지 아닌지 검증하는 필터가 필요하다.  1. 커스텀 JWT 필터 등록:Spring Security의 필터 체인에 사용자 정의 필터를 추가합니다. 이 필터는 일반적으로 OncePerRequestFilter를 상속받아 구현합니다. SecurityConfig 클래스에서 이 필터를 등록합니다.2. JWT 검증 과정:필터는 모든 요청에 대해 실행됩니다. HTTP 요청 헤더에서 "Authorization" 키를 확인합니다. "Authorization" 헤더가 "Bearer "로 시작하는 JWT 토큰을 포함하고 있는지 확인합니다. 3. SecurityCo..
출처 : 개발자 유미(유튜) 이번 글에선 여태까지 작성해준 코드에 jwt를 주입하고 로그인 검증 성공 시 메서드만 작성하면 되는 것이기 때문에 제 깃허브 코드를 확인하시면 됩니다. 코드 : https://github.com/mmingoo/Spring-Security-JWT-  1. JWTUtil 주입 LoginFilter : JWTUtil 주입 package com.example.jpamysql.jwt;import com.example.jpamysql.dto.CustomUserDetails;import jakarta.servlet.FilterChain;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServle..
출처: 개발자 유미(유튜브) 1. JWT 발급과 검증발급검증로그인에 성공한다면 jwt가 발급된다반면에 특정한 기능이나 접근엔 jwt가 유효한 지 검증하는 단계가 필요하다. 2. JWT 생성 원리다음 사진은 JWT를 나타내는 문장이다. JWT는 Header, Payload, Signature로 구성돼있다. jwt임을 알려주는 역할을 한다또한 인코딩 될 때 사용한 암호화 알고리즘을 알려준 사용자가 입력한 정보(username, password)를 담고 있다. Haeder와 Payload를 Base64방식으로 인코딩 시키고 암호화키를 합쳐서  암호화시킨 알고리즘을 뜻한다암호화된 알고리즘 : BASE64(Header) + BASE64(Payload) + 암호화3. 특징jwt는 내부 정보를 단순 BASE64 방식..
출처 : 개발자 유미(유튜브)       CustomUserService에서 loadUserByUsername정의 (username으로 repsitory를 통해 DB에서 User의 정보를 가져옴 )만약에 User의 정보가 존한다면 UserDetails에 User의 정보를 담아서 Authentication Manager에 전달 후 검증 즉 한 마디로,Spring Security를 사용하여 회원가입 시 JoinService의 joinProcess 메서드를 통해 사용자 정보를 BCrypt로 암호화하여UserRepository에 저장하고로그인 시 LoginFilter의 attemptAuthentication 메서드에서 Authentication Manager 에 user의 정보를 전달 후loadUserByUse..
출처 : 개발자 유미(유튜브) UsernamePasswordAuthentication 가 longin dto에서 username과 pawsswor를 가져온 후에 Authentication Manager에 넘겨줌Authentication Manager가 DB에서 username과 pawssword를 가져와 검증을 진행하고검증이 성공적으로 끝나면 successfulAuth 가 동작이 되면 jwt를 생성해서 사용자에게 응답해줌 클라이언트의 요청(로그인 요청)이 오면DispatcherServlet(Spring Boot Controller)으로 향하는 중간 필터에서 요청을 가로챈 후Spring Security는  검증(인증/인가)을 진행한다. (헷갈리다면 다음 사진을 참고하자) DelegatingFilter Pr..
출처 : 개발자 유미(유튜브) 전체코드package com.example.springjwt.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;import org.springframework.security.config.http.SessionCrea..
나이많은밍구
'JAVA/Spring Security JWT' 카테고리의 글 목록