공부한 내용
JWT 기반 로그아웃 + Redis
•
코드 대체 : Jwts → JWT
◦
이전
Jws<Claims> claims = Jwts.parser().setSigningKey(refreshSecretKey). parseClaimsJws(refreshToken);
◦
이후
JWT.require(Algorithm.HMAC512(refreshSecretKey)).build().verify(token);
•
코드 대체 : Jwts → JWT
◦
이전
Date expiration = Jwts.parserBuilder().setSigningKey(secretKey).build(). parseClaimsJws(accessToken).getBody().getExpiration();
◦
이후
Date expiration = JWT.require(Algorithm.HMAC512(secretKey)).build(). verify(token).getExpiresAt();
새로 알게 된 것
BasicAuthenticationFilter이랑 GenericFilterBean 차이
BasicAuthenticationFilter와 GenericFilterBean은 모두 Spring Security 프레임워크에서 사용되는 필터 클래스임.
BasicAuthenticationFilter는 HTTP 기본 인증을 구현하는 Spring Security 필터임. 이 필터는 클라이언트에서 전달받은 사용자 이름과 비밀번호를 인증하기 위해 사용됨.
반면에 GenericFilterBean은 Spring Security 필터 체인에 등록할 수 있는 일반적인 필터 클래스임. 이 필터 클래스를 확장하면 사용자 지정 로직을 추가할 수 있음. 이 필터는 Spring Security 프레임워크에서 제공하는 다른 필터와 함께 사용할 수 있음.
결론적으로, BasicAuthenticationFilter는 HTTP 기본 인증을 처리하는 데 사용되는 필터 클래스고, GenericFilterBean은 사용자 정의 로직을 추가하는 일반적인 필터 클래스임.
JwtAuthenticationFilter와 JwtAuthorizationFilter 차이
JwtAuthenticationFilter와 JwtAuthorizationFilter는 모두 JWT(JSON Web Token) 기반 인증을 처리하는 Spring Security 필터 클래스임
JwtAuthenticationFilter는 클라이언트에서 전달받은 JWT 토큰을 검증하고, 인증된 사용자 정보를 SecurityContext에 저장합니다. 이 필터는 사용자 인증을 처리하는 데 사용됨
반면에 JwtAuthorizationFilter는 인증된 사용자가 특정 리소스 또는 API 엔드포인트에 접근할 수 있는지를 확인하는 데 사용됨. 이 필터는 SecurityContext에서 인증된 사용자 정보를 추출하고, 해당 사용자에게 필요한 권한이 있는지를 확인하여 요청을 승인 또는 거부함.
즉, JwtAuthenticationFilter는 사용자 인증을 처리하고, JwtAuthorizationFilter는 사용자 권한을 검사하여 인가를 처리합니다. 이 두 필터는 함께 사용하여 보안성을 높이는 데 사용됨.
하루 정리
TIL 작성하기
BeachCombine
로그아웃 구현, Redis 도입
PS
1주차 강의듣기
문득, OOPY를 이용해서 노션 페이지를 웹 사이트로 만든 걸 직접 해보는 것도 재밌겠단 생각이 들었다. 물론 서버 비용은 오히려 OOPY를 쓰는 게 더 저렴할 지도 모르지만, 또 굉장히 편리하지만, 아주 가끔 동기화 부분에서 불편함을 느낄 때가 있어서 내가 직접 만들어 써볼까란 생각이 들었다. 물론, 지금 떠올린 방법으론 중간에 막히는 부분이 많을 수 있지만 한 번 도전해봐야겠다.
•
불편해서 개선하고 싶은 점
◦
가끔 503이 뜸
→ 사실 내가 해도 똑같을 확률 높음 ㅎ
◦
하단 페이지 동기화가 안되어서 직접 하나하나 해줘야 할 때 많음
→ 이 역시 내가 해도 똑같을 확률 높음,,
◦
데이터베이스를 캘린더 보기를 했을 때 포스트들이 밀려서 엉뚱한 날짜에 뜸
→ 이게 젤 불편했다,,, 정 안되면 이 부분만이라도 내가 따로 API만 구현해서 기존 OOPY 사이트에 붙여 넣을까 고민이다.
•
추가하고 싶은 기능
◦
하나 있는데, 비밀이다,, 내 소즁한 아이디어니까,,,
→ 이건 이전부터 만들고 싶었는데, 이것도 따로 API만 구현해서 기존 OOPY 사이트에 붙여 넣는 것도 좋을 거 같다.