Spring
-
[Spring] Apple OIDC 로그인 구현Spring 2025. 9. 25. 16:41
이전 글에 이어서 Apple 로그인 구현 방법에 대해서도 포스팅 해보겠습니다.카카오 로그인은 OIDC 기반으로 단순히 id_token을 검증하면 됐지만,애플은 조금 더 복잡한 구조를 가지고 있습니다. 특히, 아래 2개의 내용 때문에 좀 더 복잡하다고 생각합니다.최초 로그인 시에만 email, 등 scope 정보를 제공한다는 점회원 탈퇴 시 반드시 refresh_token을 사용해 revoke를 호출해야 한다는 점이 두 가지 때문에 단순 OIDC 검증만으로는 부족합니다.이번 글에서는 Spring Boot 3.4 + Java 21 환경에서 Apple OIDC 로그인을 구현 방법에 대해 포스팅 하겠습니다.(Kakao OIDC 로그인 및 해당 포스터에 없는 클래스 내용은 👉 이전 글을 참고해주세요 🙌)📑 ..
-
[Spring] Kakao OIDC 로그인 구현Spring 2025. 9. 25. 15:27
구현기최근에 소셜 로그인을 구현할 일이 있었는데,그중에서도 카카오 로그인을 OIDC(OpenID Connect) 방식으로 구현했습니다. 보통은 OAuth 2.0 방식으로 구현하는 경우가 많은데,이번에는 보안성과 표준성을 더 살리고 싶어서 OIDC 기반 카카오 로그인을 적용했어요. 이 글에서는 제가 직접 구현하면서 정리한 코드와 개념들을 공유하려고 합니다.특히, Redis 기반 공개키 캐싱, 인터페이스 기반 확장성 설계(타 소셜 로그인 대비) 등을 담았으니비슷한 작업을 하시는 분들께 도움이 되면 좋겠습니다.📑 목차 OIDC(OpenID Connect)란? OAuth 2.0 vs OIDC 카카오 OIDC 로그인 흐름 프로젝트 환경 아키텍처 개요 Kakao Developers ..
-
[Spring] Redis의 Redisson을 활용한 분산락 처리Spring 2025. 5. 10. 19:40
개요동시성 제어를 위한 락 방식은 여러 가지가 있고, 접근 레벨에 따라서도 적용할 락 방식이 다릅니다. 예를 들어, 하나의 프로세스 안에서의 동기화, 여러 프로세스 간의 동기화, 또는 분산 시스템에서의 동기화 등 목적에 따라 요구사항과 복잡성이 달라집니다. 그 중에서도 다중 스레드 환경과 분산 시스템 환경 모두에서 동시성 제어를 보장하기 위해 Redis의 Redisson을 통한 분산락 처리에 대해 알아보겠습니다.1. 락의 종류와 차이점동시성 제어를 위해 사용되는 락은 크게 다음과 같이 분류할 수 있습니다.종류설명정리락 (Mutex)단일 프로세스, 단일 스레드 간 동시성 제어관적락 (Monitor Lock)JVM의 synchronized 키워드로 구현된 락비관적 락데이터 접근 시마다 락 걸어 충돌 방지낙관..
-
[Spring] Lock 종류 정리 (낙관적 락, 비관적 락, 분산락, 데드락, 등) 및 예시Spring 2025. 5. 8. 10:21
1. Lock이란?1.1 설명Lock은 동시에 여러 개의 트랜잭션이나 프로세스가 같은 리소스(데이터, 파일 등)에 접근하려고 할 때 발생할 수 있는 경쟁 조건(Race Condition)을 방지하기 위한 제어 장치입니다. 데이터 정합성을 보장하고 예기치 않은 충돌을 방지하기 위해 필수적인 메커니즘입니다.1.2 원리Lock은 주로 다음의 방식으로 작동합니다.하나의 트랜잭션이 리소스를 점유하면, 다른 트랜잭션은 해당 리소스가 해제될 때까지 대기하거나 실패 처리됩니다.Lock의 종류에 따라 점유 방식(낙관적, 비관적)이나 위치(DB, 분산 시스템 등)이 달라집니다.2. 낙관적 락 (Optimistic Lock)2.1 낙관적 락이란?낙관적 락은 충돌이 거의 발생하지 않을 것이라고 가정하고 처리하는 방식입니다. ..
-
[Aws + Spring] SNS(Simple Notification Service) + Spring Boot 에러 메일 전송 기능 구축하기Spring 2024. 1. 20. 16:28
소개 이번 포스트에서는 Spring Boot와 AWS의 Simple Notification Service(SNS)를 결합하여 어플리케이션에서 발생한 에러를 실시간으로 감지하고 관리자에게 메일로 알림을 보내는 기능을 구축하는 방법에 대해 알아보겠습니다. AWS SNS(Simple Notification Service)란? AWS SNS는 Amazon Web Services(AWS)에서 제공하는 완전 관리형 메시징 서비스로, 분산된 시스템에서 효율적으로 메시지를 전송하고 받을 수 있는 서비스입니다. 다양한 플랫폼과 어플리케이션 간에 쉽게 메시지를 송수신할 수 있도록 설계되었습니다. 주요 특징: 다양한 플랫폼 지원: SNS는 모바일 디바이스, 웹 어플리케이션, 이메일, HTTP 엔드포인트 등 다양한 플랫폼으로..
-
[Aws + Spring] Spring Boot + Aws Glue + S3를 활용한 방문자 통계 구축 (1)Spring 2024. 1. 2. 22:48
🚀 웹 애플리케이션을 구축할 때 방문자 통계 및 실시간 데이터 분석은필수 요소입니다. 이번 포스팅에서는 Spring Boot, AWS Glue, 그리고 S3를 결합하여 방문자 통계 시스템을 구축하는 방법을 알아보겠습니다. 이 포스팅에서는 아래 두 가지 통계를 구축할 예정입니다. 1. 일일 방문자 디바이스 통계 (PC, 모바일, 테블릿 수) 2. 일일 사이트 통계 (방문자 수, 페이지 뷰, 회원가입 수) 🎯 이 포스트를 통해 얻을 수 있는 것: AWS Glue를 이용한 데이터 ETL 프로세스 자동화 AWS S3를 활용한 확장 가능한 통계 데이터 저장소 구축 웹 애플리케이션의 방문자 통계 프로세스 구축 ✍️ 목차 1. AWS S3 로그 폴더 생성 2. Spring Boot 설정 3. Spring Boot에..
-
[Spring] Spring Boot에서 아임포트 다날 본인인증 연동(Rest Api)Spring 2023. 9. 21. 23:44
서버에서 본인인증을 처리하는 방법은 여러가지가 있다. 1) 이메일을 통한 본인인증 2) SMS를 통한 본인인증 3) PG사 제공 본인인증 서비스 이용 그 중에 3번 즉, iamport의 다날 PG사를 이용한 본인인증 서비스를 Spring Boot에서 Rest Api 방식으로 연동하는 방법을 작성해본다. 개발 환경: 💡 Spring Boot 2.5.5 💡 Java 1.8 💡 JPA 💡 Maven 💡 WebView Target: Unity 📌 아임포트 관리자 콘솔에서 가맹점 식별코드와 Api Key, Api Secret Key를 발급 받았다는 전제하에 진행한다. 먼저, 동작 순서는 아래와 같다. 1. 클라이언트에서 '본인인증하기' 클릭시 서버에 웹뷰 인증값을 요청 2. 서버에서 인증토큰(인증값 UUID, 만..
-
Spring boot Gitlab CI/CD 구축 (2)Spring 2023. 9. 19. 22:20
저번 포스팅에서는 GItlab-Runner용 IAM 계정을 생성하고, EC2 서버에 Runner를 설치 했으며, 필요한 설정까지 완료 했습니다. 이번 포스팅에서는 Gitlab Repository 설정과 Package를 설치하고 파이프라인을 구축 해보겠습니다. https://developer-been.tistory.com/37 Spring boot Gitlab CI/CD 구축 (1) 개발 프로세스에서 CI/CD(Continuous Integration/Continuous Deployment)는 애플리케이션 개발과 배포의 효율성을 높이고 소프트웨어 개발 수명 주기를 단축하는 중요한 구성 요소입니다. 이 포스팅에서는 AWS developer-been.tistory.com 5. Gitlab Runner 설정 P..