반응형

SpringBoot 3

PortOne 본인인증 연동 — 액세스 토큰은 매번 새로 받는다

실무 프로젝트 · 개발일지 PortOne 본인인증 연동 — 액세스 토큰은 매번 새로 받는다 Spring Boot · PortOne(아임포트) REST API 요약 — 클라이언트가 SDK로 받은 imp_uid를 그대로 신뢰하지 않고, 서버가 직접 PortOne REST API에 access_token을 발급받아 그 인증 건을 재조회해서 검증하는 흐름. 1. 가맹점 키는 DB에서, 토큰은 매 요청마다 imp_key/imp_secret을 코드에 박아두지 않고 저장 프로시저로 조회한다. 이 값으로 api.iamport.kr/users/getToken을 호출해 액세스 토큰을 매번 새로 받는데, 토큰을 캐싱하지 않는 대신 구현이 단순해지고 만료로 인한 실패 케이스를 아예 없앤다. M..

SpringBoot (JAVA) 2026.09.27

Spring WebSocket 채팅방 — roomId로 세션을 그룹핑하는 가장 단순한 방법

실무 프로젝트 · 개발일지 Spring WebSocket 채팅방 — roomId로 세션을 그룹핑하는 가장 단순한 방법 Spring Boot · WebSocket 요약 — 채팅방마다 별도 서버 인스턴스 없이, roomId를 키로 하는 Map> 하나로 방 단위 브로드캐스트를 구현한다. 연결/해제 시점에 이 맵만 관리하면 된다. 1. URL 경로에서 roomId를 뽑아 세션을 그룹핑 핸들러는 WebSocketHandlerRegistry에 /chat/{roomId} 패턴으로 등록되고, 세션이 연결되는 순간 URI 마지막 세그먼트를 방 ID로 파싱해서 chatRooms 맵에 추가한다. 별도의 방 생성 API 없이 URL만 다르면 자동으로 새 방이 만들어지는 구조다. private ..

SpringBoot (JAVA) 2026.09.25

JWT 토큰 발급과 검증 — 일반 토큰과 리프레시 토큰을 다르게 설계하기

실무 프로젝트 · 개발일지 JWT 토큰 발급과 검증 — 일반 토큰과 리프레시 토큰을 다르게 설계하기 Spring Boot · jjwt 요약 — 로그인 시 발급하는 일반 토큰은 유효기간 하루, 리프레시 토큰은 30년으로 설계해서 "로그인 유지" 여부에 따라 발급 메서드만 다르게 호출한다. 1. 두 개의 발급 메서드, 같은 서명 키 generateToken()은 만료를 하루 뒤로, refreshToken()은 30년 뒤로 잡는다. 같은 비밀 키(Keys.secretKeyFor(SignatureAlgorithm.HS256))로 서명하기 때문에 검증 로직은 하나로 공유할 수 있다. public String generateToken(String username) { Calen..

SpringBoot (JAVA) 2026.09.23
반응형