Accesstoken 만료검사를 위해 만료된 accesstoken을 서버에 날려서 내가 만든 Error Handler가 잘 동작하는지 보기 위해서 Postman으로 던져보았다.Exception은 다음과 같이 정의했다@Getter@AllArgsConstructorpublic class UnauthorizedException extends RuntimeException { public UnauthorizedException(String message){ super(message); } public static UnauthorizedException of(String message){ return new UnauthorizedException(message); ..
SecurityConfig @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .cors(cors -> cors.configurationSource(corsConfigurationSource())) // CORS 설정 추가 .csrf(csrf -> csrf.disable()) // .authorizeHttpRequests(authorize -> authorize .requestMatchers("/auth/**", "/profile..
build.gradlejjwt-api: JWT 기능을 사용하는 데 필요한 API.jjwt-impl: JWT 서명 및 파싱 등의 구현체.jjwt-jackson: JSON 파싱을 위한 Jackson 연동.implementation("io.jsonwebtoken:jjwt-api:0.11.5")runtimeOnly("io.jsonwebtoken:jjwt-impl:0.11.5")runtimeOnly("io.jsonwebtoken:jjwt-jackson:0.11.5") JWT밑은 JWT 관리 클래스이다. 한 번 다시 공부해보자import io.jsonwebtoken.*;import io.jsonwebtoken.security.Keys;import org.springframework.beans.factory.anno..
kkrap 프로젝트에서 카카오 로그인 Oauth 2.0을 사용해서 로그인 하는데 사용자의 인증을 추가적으로 보안적으로 해결해줄 무언가가 필요했다. 이때 JWT를 사용하였는데 어떻게 사용하였는지에 대한 문서이다. JWT에 관한 내용을 알고 싶으면 밑 문서를 보고오길 바란다.https://wo-dbs.tistory.com/245 JWT란?JWT는 다음 3개의 부분으로 구성된다.xxxxx.yyyyy.zzzzz각 부분은 Base64로 인코딩되며, ‘.’ 으로 연결된 문자열이 최종 JWT이다.부분 설명 예시Header토큰 타입과 서명 알고리즘{ "alg": "HS256", "typ": "JWT" }Pwo-dbs.tistory.com 개요우리 프로젝트에서는 사용자가 로그인 방식은 다음과 같다.클라이언트는 전달받은..
JWT는 다음 3개의 부분으로 구성된다.xxxxx.yyyyy.zzzzz각 부분은 Base64로 인코딩되며, ‘.’ 으로 연결된 문자열이 최종 JWT이다.부분 설명 예시Header토큰 타입과 서명 알고리즘{ "alg": "HS256", "typ": "JWT" }Payload토큰에 담을 데이터 (예: userId, email 등){ "sub": "123", "email": "abc@example.com" }Signature위 Header + Payload를 비밀 키로 서명한 값HMACSHA256(base64(header) + "." + base64(payload), secret) JWT는 어떻게 작동하나?사용자가 로그인ex) 소셜 로그인(Kakao, Google) 성공 시서버가 JWT를 발급서버는 사용자 정..
kkrap 프로젝트의 메인페이지에서 다른 사람들의 폴더들을 구경할 수 있는 무한 스크롤 기능을 구현하게 되었다 그 과정에 대해 기술한다.기능 개요무엇을 위한 기능인가?사용자가 다른 사용자들의 폴더를 시간순으로 탐색할 수 있도록, Instagram 피드처럼 무한 스크롤 방식으로 폴더 목록을 제공하는 기능사용자에게 어떤 가치를 제공하는가?다양한 사용자들의 관심사를 탐색정보 큐레이션의 범위를 넓혀 콘텐츠 확장성을 높인다팔로우 없이도 콘텐츠 소비가 가능하므로 서비스 체류 시간 증가로 이어진다기능 목적 및 배경왜 이 기능이 필요해졌는가?초기 서비스 구성에서 사용자가 직접 검색하거나 팔로우한 사람들의 폴더만 볼 수 있지만 사용자의 탐색 흐름이 단절 된다는 생각에 이 기능을 추가 또한 로그인 없이 탐색 가능함 공개된..