2025/07 18

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 1. 사용자 수에 따른 규모 확장성

알렉스 쉬 님의 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 정리한 포스팅 입니다.1. 단일 서버가장 단순한 구조서버 한 대에 모두 탑재→ 웹 서버, 애플리케이션 서버, 데이터베이스, 캐시 요청 처리 흐름접속 시도사용자는 도메인 이름으로 사이트 접속.DNS를 통해 도메인을 IP 주소로 변환 (컴퓨터는 도메인 이름을 인식하지 못함)HTTP 요청 전송변환된 IP 주소로 HTTP 요청 전송서버 응답서버는 HTML 또는 JSON 형태로 응답함. 2. 데이터베이스서버 확장의 필요성사용자 수가 늘어나면서 서버 한대로는 감당이 불가해짐서버의 역할을 분리하여 독립적으로 확장애플리케이션 서버: 트래픽 처리데이터베이스 서버: 데이터 관리 데이터베이스 종류항목관계형 데이터베이스 (RDBMS)비관계형 데이터베이..

Code 2025.07.31

[Spring Security] 8-2. OAuth 2.0 Resource Server: JWT

1. Minimal Dependencies for JWT의존성 모듈역할spring-security-oauth2-resource-server리소스 서버 기본 기능spring-security-oauth2-joseJWT 디코딩 및 서명 검증 기능 2. Minimal Configuration for JWTsissuer-uriAuthorization Server의 메타데이터 엔드포인트를 자동으로 탐색 (.well-known/oauth-authorization-server/issuer)public key 및 검증 설정을 구성함 (jwks_uri)동작 내용설명issuer-uri로 metadata endpoint 요청issuer-uri 값에 따라 호출- .well-known/oauth-authorization-serv..

[Spring Security] 8-1. OAuth2 Resource Server

리소스 서버는 외부 인가 서버에 인증/인가를 위임함 (요청을 통해 인증 토큰 검증) 1. Bearer Token 인증 동작 방식인증되지 않은 요청 처리 흐름사용자: secured resource 요청 (Bearer Token 포함 ❌)AuthorizationFilter: AccessDeniedException 발생 (인증 ❌)ExceptionTranslationFilter: AccessDeniedException 처리BearerTokenAuthenticationEntryPoint: WWW-Authentication: Bearer 응답 인증 요청 처리 흐름사용자: secured resource 요청 (Bearer Token 포함 ✅)BearerTokenAuthenticationFilterDefaultBea..

[Spring Authorization Server] 2. Core Model / Components

1. RegisteredClient인가 서버에서 등록된 클라이언트 정보를 나타내는 객체 표) 주요 속성더보기필드설명예id내부 시스템에서 고유하게 식별되는 UUID clientId외부 클라이언트가 사용하는 고유 식별자client-aclientSecret클라이언트 비밀번호. PasswordEncoder로 인코딩된 값 clientAuthenticationMethods클라이언트 인증 방식client_secret_basic private_key_jwt authorizationGrantTypes클라이언트가 사용할 수 있는 grant type 목록refresh_tokentoken_exchangeredirectUrisauthorization_code flow에서 사용할 redirect URI postLogoutRedi..

[JWT] 2-1. Federated Identity

1. Federated Identity서로 다른 시스템 간에 사용자 인증과 권한 부여를 공유할 수 있도록 해주는 방식사용자 신원 정보는 중앙 집중형으로 관리됨 특징사용자 입장에선 하나의 로그인으로 여러 서비스 이용 가능 2. 동작 흐름 과정더보기사용자: 리소스 서버의 보호된 자원에 접근 시도사용자: 권한이 없으므로 리소스 서버가 인가 서버로 리디렉션사용자: 다시 신원 제공자(IDP)의 로그인 화면으로 리디렉션사용자: 로그인 성공인가 서버: 인증 정보 응답 (redirect_uri로 리디렉션)인가 서버: 필요한 JWT나 토큰을 포함한 요청으로 리소스 서버에 리디렉션사용자: 리소스에 접근 성공 보안모든 흐름은 URL 리디렉션을 통해 사용자 브라우저를 경유함TLS 사용이 필수

카테고리 없음 2025.07.22

[JWT] 4. JSON Web Signatures (JWS)

0. JWS서명제3자에 의해 위조되지 않았음을 증명생성자가 누군지 확인할 수 있음 Validation헤더와 페이로드에 명시된 조건을 충족옵션) 사용자 정의 조건도 추가 가능 1 Structure of a Signed JWT예시) Header더보기{ "alg": "HS256", // 서명 알고리즘 "typ": "JWT" // 타입 (JWT 고정)} 예시) Payload더보기{ "sub": "1234567890", "name": "John Doe", "admin": true} 예시) Signature더보기HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret) 알고리즘알고리즘서명 방식키 구조특징..

카테고리 없음 2025.07.22

[JWT] 2-3. Practical Application: OAuth2 & OpenID

1. JWTs and OAuth2JWT를 Access Token으로 사용토큰 안에 권한 범위, 사용자 정보, 접근 권한 등을 직접 담을 수 있음토큰 유효기간을 지정할 수 있음디지털 서명이 되어있어 resource server에서 자체적으로 검증 가능 (매번 authorization server에 인증 요청을 하지 않아도 됨)많은 IdP들이 JWT 형식으로 Access Token을 발급함 JWT를 Refresh Token으로 사용Authorization Server에 보내서 새 Access Token을 발급받음 2. JWTs and OpenID ConnectOpenID Connect Flows and JWTs 3. Exampleauthorization server를 두어 특정 로그인 제공자에 종속되지 않고..

[Spring Authorization Server] 1. Configuration Model

1. Introducing Spring Authorization ServerSpring Authorization Server는 OAuth2.1과 OpenID Connection 1.0 명세의 구현을 제공하는 프레임워크입니다. 2. Use Cases항목설명구성 및 커스터마이징 제어고급 설정이 필요한 경우, 전체 인증 흐름 및 동작을 세밀하게 제어할 수 있음경량화된 서버 구조상용 제품 대비 불필요한 기능 없이 핵심 기능만 포함되어 있음비용 절감오픈소스 기반, 자체 호스팅 가능 → 상용 솔루션 대비 비용 절감 가능개발 편의성Spring 기반 환경에 익숙한 개발자라면 빠른 셋업 가능, Spring Security와 유사한 설정 구조 제공 3. Default ConfigurationOAuth2OAuth2Autho..

[Spring Security] 7-4. OAuth2 Client: Authorized Client Features

1. Resolving an Authorized Client@RegisteredOAuth2AuthorizedClient컨트롤러 메서드에서 OAuth2AuthorizedClient를 주입받을 수 있음OAuth2AuthorizedClientArgumentResolver에 의해 주입됨OAuth2AuthorizedClientArgumentResolver는 OAuth2AuthorizedClientManager를 사용하여 가져옴OAuth2AuthorizedClientManager는 Repository와 Provider에게 위임하여 OAuth2AuthorizedClient를 반환함Provider의 전략 객체별 조건을 만족해야 동작함 예시) OAuth2ClientController더보기@Controllerpublic ..

[Spring Security] 7-2. OAuth2 Client: Authorization Grant Support

1. Authorization CodeInitiating the Authorization RequestOAuth2AuthorizationRequestRedirectFilter로그인 요청을 시작하는 필터OAuth2AuthorizationRequestResolver를 사용해서 OAuth2AuthorizationRequest 생성user-agent를 Authorization Sever의 authorization endpoint로 리디렉션함 OAuth2AuthorizationRequestResolver웹 요청 정보에서 OAuth2AuthorizationRequest를 구성해주는 역할 PKCE (Proof Key for Code Exchange)OAuth 2.0 Authorization Code Grant 흐름의..