Spring Security8 AWS EC2 에서 Elastic Cache(Redis) 연결하여 JWT RefreshToken 저장하기 1) EC2 접속 후 아래와 같은 명령어를 입력한다.sudo apt-get updatesudo apt-get install build-essential wgetwget http://download.redis.io/redis-stable.tar.gztar xvzf redis-stable.tar.gzcd redis-stablemake distclean makesrc/redis-cli -c -h yourcachecluster.yourregion.cache.amazonaws.com -p 6379 참고) Elastic Cache Redis를 생성하고 몇 분이 지나면 아래와 같이 Redis Cache의 엔드포인트 주소를 알 수 있다. 생성한 Redis의 기본 엔드포인트의 주소를src/redis-cli -c -h .. 2024. 5. 25. Refresh-Token(JWT)을 MySQL DB가 아닌 Redis 캐시에 저장해보자 RedisTemplate @Configurationpublic class RedisConfiguration { @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") private int redisPort; @Bean public RedisConnectionFactory redisConnectionFactory() { return new LettuceConnectionFactory(redisHost, redisPort); } @Bean public RedisTemplate redisTemplate() { RedisTemplate r.. 2024. 5. 20. JWT 로그인 시 Refresh-Token 저장소를 Redis로 변경하는 이유 이전에 진행했던 프로젝트에서 JWT 로그인을 구현하였습니다.JWT 토큰을 이용한 로그인에는 Access-Token과 Refresh-Token이 쓰이는데,Access-Token은 인증을 위한 토큰으로 사용되고, Refresh-Token은 액세스 토큰을 재발급 하는데 사용됩니다. [기존의 Refresh Token 사용 방식]입력한 회원정보와 가입한 회원정보가 일치할 시, Login을 할때, Refresh-Token을 서버에서 만들어 MySQL database에 저장하고, 액세스 토큰의 유효기간 만료로 인한 토큰 재발급 시, 리프레시 토큰값을 비교하여 일치 할 경우, 새로운 액세스 토큰과 리프레시 토큰을 발급합니다. 위에서 아쉬운 점은, Refresh-Token을 발급한 이후, 별도의 로그아웃 API 호출이 .. 2024. 5. 20. JWT와 Redis를 활용한 인증 시스템 구축하기(1) JWT는 웹 표준으로서, 두 개체 사이에서 JSON 객체를 사용하여 가볍고 자가 수용적인 방식으로 정보를 안전하게 전송할 수 있게 해줍니다. Redis는 고성능 키-값 저장소로서, 세션 관리나 토큰 저장 등에 활용될 수 있습니다. 이 글에서는 JWT와 Redis를 활용하여 인증 시스템을 구축하는 방법에 대해 설명하겠습니다. JWT를 활용한 인증 프로세스JWT를 활용한 인증 프로세스는 크게 사용자 인증과 토큰 발급, 토큰 검증의 세 단계로 나눌 수 있습니다.사용자가 로그인을 요청하면, 서버는 사용자의 인증 정보를 검증한 후 JWT를 생성하여 사용자에게 반환합니다. 이 JWT에는 사용자의 신원을 나타내는 정보와 함께, 토큰이 유효한 시간 등의 정보가 포함됩니다.사용자는 이후의 요청에서 이 JWT를 Autho.. 2024. 5. 19. 동시 세션 제어 / 세션 고정 보호 / 세션 정책 동시 세션 제어 현재 동일한 계정으로 인증을 받을 때, 생성되는 세션의 허용 개수가 초과되었을 경우에 어떻게 그 세션을 계속적으로 초과하지 않고 유지할 수 있을까? Spring Security의 동시 세션 제어 전략에는 2가지(이전 사용자 세션 만료 / 현재 사용자 인증 실패) 방식이 있다. http.sessionManagement() : 세션 관리 기능이 작동함 protected void configure(HttpSecurity http) throws Exception { http.sessionManagement() .maximumSessions(1) 최대 허용 가능 세션 수, -1 : 무제한 로그인 세션 허용 .maxSessionsPreventsLogin(true) true : 동시 로그인 차단함, .. 2024. 2. 6. 기본 API & Filter 이해 (3) - Logout, LogoutFilter 인증 API - Logout http.logout() // 로그아웃 기능이 작동함 protected void configure(HttpSecurity http) throws Exception { http.logout()// 로그아웃 처리 .logoutUrl("/logout")// 로그아웃 처리 URL .logoutSuccessUrl("/login")// 로그아웃 성공 후 이동페이지 .deleteCookies("JSESSIONID“, "remember-me") // 로그아웃 후 쿠키 삭제 .addLogoutHandler(logoutHandler())// 로그아웃 핸들러 .logoutSuccessHandler(logoutSuccessHandler()) // 로그아웃 성공 후 핸들러 } Logout 요청의 경.. 2024. 2. 2. 이전 1 2 다음