전체 글 (1067) 썸네일형 리스트형 TaskEither, Effect.ts 1. TaskEither - Task(비동기) + Either(try-catch)를 합친 개념. fp-ts(functional programming - typescript)의 클래스이다.- 런타임에 에러가 나면 throw가 되면서 에러를 알게 되겠지만, 자바스크립트 특성상 비동기로 오는 Promise 객체를 한 번더 까봐야 어떤 에러인지 알 수 있다. TE로 감싸서 미리 에러 처리를 해놓고 실패할 경우(left) 어떤 에러를 반환할지를 정해놓으면 명시적이고, 코드 자체에 에러 종류별로 어떤 처리를 할지를 강제할 수 있어서 실수를 할 위험이 없어지고 컴파일 타임에 에러 처리를 발견할 수 있다. Java는 CheckedException이 있지만, JavaScript는 동적 타입 언어라서 그런 예외가 따로 없.. AC + PKCE 가 브라우저를 강제하는 이유와 인앱 WebView 차단 OIDC AC flow 가 "왜 굳이 브라우저(또는 시스템 브라우저)" 를 거치게 만드는가, 그리고 왜 Google 등이 카카오톡 인앱 WebView 같은 embedded user-agent 를 차단하는가에 대한 정리.7.1 OAuth/OIDC 보안 모델이 브라우저 위에 서 있는 이유redirect 기반 인증 흐름의 보안 전제 — 다음 보호가 모두 사용자 에이전트(브라우저) 안에서만 성립:보호 무엇이 보장되나클라이언트 격리RP(클라이언트 앱) 가 사용자 비밀번호를 절대 보지 못함. 입력은 IdP origin 위에서만Same-Origin Policy다른 origin 의 JS 가 IdP 의 DOM·쿠키에 접근 불가HttpOnly / Secure / SameSite cookieIdP 세션 쿠키는 JS 도 못 .. JWT 기반 사용자 식별 패턴 정리 3.1 일반적인 패턴은?✅ JWT sub 사용 (가장 표준)대부분의 OAuth/OIDC 시스템은 JWT 의 sub claim 으로 사용자 식별. 클라이언트가 받은 AT 에 본인 sub 가 있으니 서버는 토큰만 파싱하면 됨.표준: RFC 7519 (JWT), OIDC Core spec장점: 클라이언트가 별도 헤더를 넣을 필요 없음. 토큰만 서명 검증되면 신원 확정단점: server-to-server (CC) 호출 시 sub 가 service-account 라 "어느 사용자에 대한 작업인지" 별도 표현 필요⚠️ 헤더 기반 사용자 식별 (X-User-Uuid 등)표준이 아니다. 각 시스템이 ad-hoc 으로 정의. service mesh / internal API gateway / impersonation 시.. 분산 락 멀티 인스턴스 환경일 때 특정 key값에 대해서 동시성(동시 수정) 방지를 위해 사용한다. Redis의 싱글 스레드라는 특성, Redisson 라이브러리를 이용한다.Hash 자료구조를 사용한다.- Key: lock:{key이름}:{보통 사용하는 id값}- Field: {Redisson UUID} : {Java Thread ID}소유자 식별자로 사용하며, Redisson UUID를 사용하면 RedissonClient 인스턴스가 서버(JVM) 인스턴스마다 고유하게 부여한다.ex) a3f2e1d0-b7c4-4f2a-9e88-1234abcd5678 : 52- Value: 재진입 횟수로 정수값으로 기록한다. -> 똑같은 스레드가 똑같은 userId(보통 사용하는 id값)에 대해서 접근 시도(락 획득)를 할 때 이.. Non-Heap Usage Heap이 아닌 메모리 영역 Metasapce: 클래스 메타 데이터 저장Code Cache: JIT 컴파일된 네이티브 코드Compressed Class Space: 압축된 클래스 포인터Thread Stacks: 각 스레드의 스택 메모리 별도 설정 필요: -XX:MaxMetaspaceSize클래스 로딩이 많으면 증가 (Spring의 프록시, 동적 클래스 생성 등) Non-Heap과 트래픽 관계 .. Gradle Daemon Gradle Daemon 설명 --no-daemon의 반대 설정인 org.gradle.daemon=true에 대해: - Daemon 방식: JVM을 백그라운드에 계속 띄워두고 재사용 - 첫 번째 빌드: JVM 시작 (느림) - 이후 빌드: 이미 실행 중인 JVM 재사용 (빠름) - JVM warmup 효과로 점점 빨라짐 - --no-daemon: 매 빌드마다 새 JVM 시작 후 종료 - CI/CD 환경에서 주로 사용 (일회성 빌드) - 로컬에서는 비효율적 로컬 개발 환경에서는 Daemon 모드가 훨씬 빠릅니다. keycloak NICE 본인 인증 구현 - iOS 팝업, 사파리 ITP 문제 1. ITP(지능형 추적 방지)가 뭔가요?ITP(Intelligent Tracking Prevention)는 애플이 Safari 브라우저에 도입한 초강력 개인정보 보호 기술입니다. 사용자가 여러 웹사이트를 돌아다닐 때 광고 회사들이 쿠키를 이용해 사용자를 추적(Tracking)하는 것을 막기 위해, 제3자 쿠키(Third-party Cookie)의 접근을 아주 엄격하게 차단합니다.2. 왜 '일반 팝업'에서 세션(로그인 상태)이 날아갈까?이해하기 쉽게 '본인 인증' 팝업을 띄우는 상황을 상상해 보세요.사용자가 내 웹사이트(A.com)에서 로그인한 상태로 '인증하기' 버튼을 누릅니다.window.open 등으로 새 팝업창이 뜹니다.팝업창 안에서 본인확인기관(NICE.com)으로 페이지가 이동하여 인증을 진행.. Client Scope, Mapper 설정 정리 보호되어 있는 글입니다. 이전 1 2 3 4 ··· 134 다음