Framework & Library/Spring Security
-
Spring Security JWT - JWT를 통한 인증Framework & Library/Spring Security 2021. 10. 10. 19:42
JWT 검증 JwtAuthorizationFilter 클래스 생성 public class JwtAuthorizationFilter extends BasicAuthenticationFilter { private UserRepository userRepository; public JwtAuthorizationFilter(AuthenticationManager authenticationManager, UserRepository userRepository) { super(authenticationManager); this.userRepository = userRepository; } @Override /** 인증이나 권한이 필요한 주소요청이 있을 때 실행되는 메서드 */ protected void doFilte..
-
Spring Security JWT - JWT 생성 후 응답Framework & Library/Spring Security 2021. 10. 10. 01:25
JwtAuthenticationFilter 클래스 수정 ㆍ JwtAuthenticationFilter 클래스의 successfulAuthentication() 메서드를 위 사진과 같이 수정한다. ㆍ successfulAuthentication() 메서드는 attemptAuthentication() 메서드가 실행되고 인증이 정상적으로 되었으면 자동으로 실행되는 메서드이다. ㆍ attemptAuthentication() 메서드에서 JWT를 생성하고 Header에 JWT 정보를 담아 클라이언트 측에 응답을 하는 방식이다. 테스트 로그인 요청 ㆍ username의 값을 "qlsdud0604"로 password의 값을 "1234"로 지정한 후 JSON 형태로 로그인 요청을 한다. Header 정보 확인 ㆍ 로그인..
-
Spring Security JWT - 로그인 인증Framework & Library/Spring Security 2021. 10. 9. 16:35
JwtAuthenticationFilter 클래스 수정 ㆍ 로그인인 인증을 수행하기 위해 JwtAuthenticationFilter 클래스의 attemptAuthentication() 메서드를 위 코드와 같이 수정한다. ㆍ 첫 번째 부분에서 전달받은 JSON 데이터를 파싱 해서 User 객체로 만든다. ㆍ 두 번째 부분에서는 파싱 된 User 객체의 username과 password를 이용해서 토큰을 생성한다. ㆍ 생성된 토큰은 로그인 인증을 위해 사용되는 토큰이다. ㆍ 세 번째 부분에서는 생성한 토큰을 이용해 AuthenticationManager 객체가 로그인을 시도한다. ㆍ 이때, PrincipalDetailsService의 loadUserByUsername() 메서드가 자동으로 실행되고, load..
-
Spring Security JWT - 회원가입Framework & Library/Spring Security 2021. 10. 9. 15:42
SpringConfig 클래스 수정 ㆍ SecurityConfig 클래스에 위 사진에 표시된 코드를 추가한다. ㆍ BCryptPasswordEncoder는 사용자의 패스워드를 암호화해주는 객체이다. ㆍ @Bean 애너테이션을 통해 해당 메서드의 리턴되는 객체를 IoC로 등록해준다. Controller 수정 ㆍ RestApiController 클래스에 회원가입을 수행하는 메서드인 join() 메서드를 추가한다. ㆍ join() 메서드는 User 객체를 전달받고 User 객체의 패스워드를 BCryptPasswordEncoder 객체를 통하여 암호화를 한 후 DB에 저장한다. ㆍ DB에 저장이 완료되면 "회원가입 완료"라는 메시지가 반환된다. 테스트 회원가입 요청 ㆍ 테스트는 Postman을 통해서 진행하였다..
-
Spring Security JWT - JWT를 위한 로그인 시도Framework & Library/Spring Security 2021. 10. 8. 17:34
Repository 생성 public interface UserRepository extends JpaRepository { User findByUsername(String username); } ㆍ repository 패키지를 만들고 위 코드와 같이 UserRepository 인터페이스를 생성한다. ㆍ 사용자의 username을 통해 User 객체를 반환하는 findByUsername() 메서드를 작성해준다. PrincipalDetails 클래스 생성 public class PrincipalDetails implements UserDetails { private User user; public PrincipalDetails(User user) { this.user = user; } @Override p..
-
Spring Security JWT - 임시 토큰을 통한 테스트Framework & Library/Spring Security 2021. 10. 8. 14:43
MyFilter01 클래스 수정 ㆍ 필터의 역할을 하는 MyFilter01 클래스를 위 코드와 같이 수정한다. ㆍ POST 방식의 요청이 올 경우에만 동작을 하도록 설정을 하였으며, header를 통해 전송된 내용이 "test token"일 경우 정상적으로 처리하도록 하였고 그게 아닐 경우 실패 처리를 하도록 하였다. 컨트롤러 생성 ㆍ RestApiController 클래스에 위 사진에 표시된 token() 메서드를 추가한다. ㆍ token() 메서드는 매핑된 url로 POST 요청이 왔을 때 "token"의 데이터를 응답하도록 하는 메서드이다. 테스트 "not test token" 전송 ㆍ 테스트는 Postman을 통해서 진행하였다. ㆍ header의 Authorization의 value 값을 "not..