[SpringBoot] ThreadLocal을 활용한 인증관리

개요 Spring Boot는 스레드 풀을 통해 요청에 맞는 스레드를 할당합니다. 인증된 사용자의 ID를 ThreadLocal에 저장하여 전역적으로 접근 가능하게 하려고 했습니다. 문제점 ThreadLocal에 저장되고 초기화 하지 않았을 때 다음 사용자가 인증에 실패해도 전에 사용자의 정보가 남아있어 비즈니스 로직이 실행되는 문제가 발생했습니다. 시나리오 사용자 1이 ID “1"로 인증 성공 후 ThreadLocal에 저장 사용자 2가 토큰 없이 요청 (인증 실패) 사용자 2가 사용자 1의 정보로 비즈니스 로직 실행 해결방안 ...

June 20, 2024 · Lee WooJin

[인증/인가] JWT토큰 생성 과정과 원리에 대해서

JWT토큰이란? JWT(JSON WEB TOKEN)은 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 표준입니다. 토큰은 기본적으로 서버에게 본인 확인을 증명하는 수단으로 이해할 수 있습니다. JWT토큰 HS 기반 설명 HS256은 HMAC SHA 256의 약자로, 헤더, 페이로드, 비밀키를 SHA256으로 암호화하는 방식입니다. 1. 클라이언트 로그인 사용자가 아이디와 비밀번호를 입력하여 서버에 전송합니다. 2. 서버 인증 @PostMapping("/login") public Response<MemberLoginResponse> login(@RequestBody MemberJoinRequest request) { String token = memberService.login(request.getUsername(), request.getPassword()); return Response.success(new MemberLoginResponse(token)); } 서버는 데이터베이스에서 사용자 존재 여부를 확인합니다. ...

July 5, 2023 · Lee WooJin