Spring Security 5

[Spring] JWT 이용해서 로그인 기능 만들기 - 필터 작성

공부용이기 때문에 복잡한 로직은 넣지 않고 최대한 단축해서 작성하려 했는데 내용이 너무 길다.. 직전까지 JWT토큰을 이용해서 로그인하는것 까진 성공했으니, 이젠 클라이언트 요청으로부터 토큰값을 받아 controller로 요청을 보내는 JWT Filter 기능을 적용해볼거다. 기존에 filter을 적용하지 않았을 땐 무조건 403 forbidden에러가 발생했는데, 왜냐면 사용자의 신원을 확인하는 로직(= SecurityContext에 Authentication을 아직 구현 안함)이 없어 무조건 권한이 없다는 return값을 출력하도록 냅뒀기 때문이다...그래서 이제부터 Filter 적용기를 써내려본다...필터를 타는 순서모든 요청들은쿨라이언트 요청→ SecurityFilterChain→ 여러 Spri..

[Spring] JWT 이용해서 로그인 기능 만들기

JWT = 양파자꾸 공부하면 공부할수록 뭔 양파마냥 알아야 할게 자꾸 나온다.. 미쳐버릴지경어떻게 구현할거냐면사용자 검증 UserDetailsService비밀번호 비교 PasswordEncoderAuthentication 객체 생성JWT 발급클라이언트에 토큰 전달Filter 구현순서대로 작성할 예정이다.작성 순서@Service@RequiredArgsConstructor@Slf4jpublic class AuthService { private final AuthenticateHandler authenticateHandler; private final JwtProvider jwtProvider; private final UserDetailsServiceImpl userDetailsService..

[Spring] JWT 이용해서 로그인 기능 만들기 - 사용자 검증

너무 길어져서 설명 따로 분리한다.@Service@RequiredArgsConstructor@Slf4jpublic class AuthService { private final AuthenticateHandler authenticateHandler; private final JwtProvider jwtProvider; private final UserDetailsServiceImpl userDetailsServiceImpl; public TokenDTO login(LoginRequestDTO request) { PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); /* * (1) 사용자 검..

[Spring] Spring Security 맛보기

미루고 미루던 Spring Security를 슬슬 공부할 때가 된 듯 하다.... 그날이 왔도다1. Spring Security란Spring Security는 Spring 기반의 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크이다.로그인, 보안을 위한 인증 • 인가들을 개발하기 위해선 Spring Security를 많이 사용한다.2. Spring Security 원리Spring Security의 흐름은 다음과 같다.요청(Request) → 필터(Filter) → 인증(Authentication) → 인가(Authorization)(1) 요청(Request)여기서 요청(Request)란 클라이언트가 서버로 보내는 모든 HTTP 요청을 의미한다.서버는 한 번 인증했다고 해서 계속 로그인 상태임을 기억하..

[Spring] Spring Security - application.yml로 URL권한을 동적으로 관리하기

로그인을 구현 안하고 바로 Spring security로 클라이언트 - 서버간 통신시키려 하니 당연히 403에러가 자꾸 나서 열받는다.빨리 로그인을 먼저 구현해야 할 것 같은데... 원하는 기능을 다 만든 후 최후에 로그인을 만들고 싶어서 미뤄놨던 이리 귀찮은 댓가를 받게 되었다.그래도 공부한다 생각해야지.... 1. 원래는 어떻게 관리했었는가SecurityConfig는 프로젝트에 적용할 보안 정책을 설정하고 적용을 하는 클래스이다. 아무 설정 없이 클라이언트와 통신하려면 403 forbidden에러를 만나게 될 것이다.그래서 클라이언트로부터 오는 url을 허용시키기 위해 requestMatchers에 다음과 같이 작성했었다.@Beanpublic SecurityFilterChain filterChain(..