프로젝트/Share Your Trip
-
[Spring boot] Spring Security + JWT + Redis (3/3)프로젝트/Share Your Trip 2024. 2. 7. 22:08
이번 포스팅에서는 유효한 RefreshToken을 활용하여 만료된 AccessToken을 갱신하고 MySQL에 RefreshToken을 저장하는 것이 아닌 Redis에 저장하여 효율적으로 토큰을 관리해보려고 한다. 또한, MySQL에서 refreshToken을 조회했을 때와 Redis를 통해서 refreshToken을 조회했을 때의 성능 차이를 비교해보려고 한다.MySQL에서 RefreshToken 관리@Overridepublic UserDto.UserInfoResponseDTO login(final UserDto.LoginRequestDTO requestDTO) { UsernamePasswordAuthenticationToken authenticationToken = new UsernamePass..
-
[Spring boot] Spring Security + JWT + Redis (2/3)프로젝트/Share Your Trip 2024. 2. 6. 21:36
이번 포스팅에서는 Share Your Trip 프로젝트에 Spring Security를 적용해 볼 것이다. 또한, JWT와 함께 사용하여 Spring Security를 커스터 마이징 해볼 것이다.Spring Security FilterShare Your Trip은 Rest API 서버로 formLogin 방식을 사용하지 않아 formLogin(AbstractHttpConfigurer::disable)을 설정했다.httpBasic은 username과 userpassword를 텍스트로 전송하는 방식이다. 해당 프로젝트에서는 JWT 방식을 사용하여 httpBasic(AbstractHttpConfigurer::disable)을 설정했다.stateless한 JWT 사용으로 인해 Spring Security에서 기..
-
[Spring boot] Spring Security + JWT + Redis (1/3)프로젝트/Share Your Trip 2024. 2. 5. 21:33
Spring Security 에 대해서 왜 궁금했을까 ❓- Share Your Trip 프로젝트에서 여행지를 공유할 수 있는 커뮤니티 게시판이 존재했다. 이러한 기능에서 불필요한 글을 작성하거나 악성 유저의 글을 관리할 관리자가 필요했다.- Spring에서는 Spring Secuity를 통해서 인증과 권한을 관리할 수 있었다. 이를 통해, 사용자와 관리자를 인증하고 권한을 분리하여 보안성을 강화해보려고 한다. Spring Security의 구조 Architecture :: Spring SecurityThe Security Filters are inserted into the FilterChainProxy with the SecurityFilterChain API. Those filters can be ..
-
[Spring boot] @Builder프로젝트/Share Your Trip 2024. 1. 14. 14:02
@Builder Annotation에 대해서 왜 궁금했을까❓- SSAFY 1학기 프로젝트 Validation, Swagger 등을 추가하며 리팩토링 하는 과정에서 대부분의 사람들이 @Builder를 이용하여 코드를 짜는 것을 보았다.- 많이 사용한다는 것은 이점이 있을 것이라 생각이 되었고 이번 기회에 학습하고 좋다면 리팩토링 과정에 추가해보려 한다. @Builder우선 @Builder 패턴으로 객체를 생성하면 좋은 점 4가지를 뽑을 수 있는데 살펴보도록 하자1. 필요한 데이터만 설정할 수 있다.// 1. Dummy Data InsertUser user = new User("cks._.hong", 0, 176)// 2. 생성자, 정적 팩토리 메소드를 추가하는 방법@NoArgsConstructor @Al..
-
[Spring boot] JWT(JSON Web Token)프로젝트/Share Your Trip 2024. 1. 12. 22:46
JWT(JSON Web Token) 왜 궁금했을까 ❓- NodeJS를 이용해서 JWT 인증 방식을 구현해 본 경험이 있지만, Spring boot로 JWT(JSON Web Token) 인증을 구현해본 경험이 없어서 시간이 부족했던 1학기 프로젝트에서 JWT를 적용하지 못했다.- 개발 시간이 비교적 널널한 2학기 프로젝트에서 JWT 인증을 도입하여 OAuth 확장성과 낮은 성능의 서버로 인해 Client에서 인증 정보를 관리하도록 해보려고 한다. JWT를 사용해야 하는 이유 ❓낮은 성능의 서버로 인해 서버에서 인증 정보를 보유하고 처리하는 Session의 방식보다는 Client에서 인증 정보를 보유하고 서버에서는 인증 여부만 판별하는 식으로 서버의 부하를 줄여보려고 한다.추후, 소셜 로그인(OAuth)를..
-
[Spring boot] Password 암호화프로젝트/Share Your Trip 2024. 1. 11. 21:55
Password 암호화 왜 궁금했을까❓- SSAFY 프로젝트를 진행하면서 법적으로 정해져 있는 비밀번호 일방향 암호화를 준수하기 위해 사용자 비밀번호를 SHA512를 통해 해시하여 DB에 저장하였다.- 해당 기능에 대해 흐름이나 작동 방식은 이해하고 있지만, 내가 구현한 부분이 아니였기에 정확하게 각 코드들이 어떤 역할을 하는 지 알지 못하여 학습해보려 한다. Password 암호화 왜 해야할까❓단순 Plain Text로 DB에 저장하는 것은 보안적인 측면에서 위험하다고 할 수 있다. 그 이유는 DB에 있는 password 정보가 SQL Injection이나 개발자의 부주의로 의해 조회가 된다면 계정 탈취에 대한 위협이 존재하게 되고 보통 다른 사이트에서도 동일한 password를 사용하기 때문에 영향을..
-
[Java] Wrapper 클래스프로젝트/Share Your Trip 2024. 1. 7. 13:15
Wrapper 클래스 왜 궁금했을까❓- Optional 클래스에 대해서 공부하는 과정에서 Wrapper 클래스의 개념이 나왔는데 몰랐던 개념이어서 공부하고 정리 해보려고 한다. Wrapper 클래스Java의 자료형은 기본 타입(primitive type)과 참조 타입(reference type)으로 나뉘는데 기본 타입을 객체로 다루기 위해서 사용하는 클래스를 Wrapper 클래스라고 지칭한다.기본 타입만 Wapper 클래스를 적용하는 이유는 boxing, unboxing 등 과정에서 발생하는 오버헤드때문에 성능 저하가 일어날 수 있기 때문이다. Wrapper 클래스의 종류기본 타입(Primitive)Wrapper 클래스byteByteshortShortintIntegerlongLongfloatFloatd..
-
[Java] Optional 클래스프로젝트/Share Your Trip 2024. 1. 6. 20:16
Optional 클래스 왜 궁금했을까❓- SSAFY 1학기 프로젝트를 리팩토링하기 위해 다른 사람들의 블로그를 참고해가며 Error Handling에 대해 공부를 하고 있었는데 Optional 클래스가 사용되는 것을 보았다.- 대부분의 포스팅들에서도 Optional 클래스가 사용되고 있었고 중요도가 높다고 생각이 들어 정리해보려고 한다. Optional 클래스Java 8에서부터 Optional 클래스를 사용하여 NPE(NullPointerException)이 발생하지 않도록 방지할 수 있는 Wrapper 클래스이다.public final class Optional { /** * Common instance for {@code empty()}. */ private static fi..