Spring 131

[Spring Security] 8-1. OAuth2 Resource Server

1. OAuth2 Resource Server보호된 자원을 관리하는 서버✅ 보호된 자원의 요청에 대한 인증 과정을 담당함 Protect Access with an OAuth2 Access Token구분설명검증JWT자체 서명 토큰public key 사용Opaque Token토큰 내용을 알 수 없는 토큰인정 서버의 introspection 엔드포인트에 확인 요청 설정) JWT더보기더보기spring: security: oauth2: resourceserver: jwt: issuer-uri: https://my-auth-server.com@Configuration@EnableWebSecuritypublic class SecurityConfig { @Bean ..

[Tomcat 11] 1. Architecture

1. ArchitectureTomcat Server└── Service ├── Connector (HTTP / AJP) ← 요청을 받는 입구 └── Engine ← 요청 처리 총괄 ├── Host (www.site.com) │ ├── Context (/) │ ├── Context (/chat) │ └── Context (/admin) └── Host (api.site.com) ├── Context (/) └── Context (/v1)구성 요소정의역할Server톰캣의 전체 인스턴스이자 최상위 컨테이너여러 Service를 담고 전체 서버를..

Spring/Spring MVC 2026.04.16

[Tomcat 11] 2. Connector

1. HTTP 1.1 Connector특정 TCP 포트에서 연결을 받아서, 요청을 처리를 하게 하는 입구 (Engine으로 넘겨 처리함)non-async 요청 1개당 worker thread 1개를 처리 동안 점유함 2. AttributesCommon Attributes속성설명의미protocol어떤 HTTP connector 구현을 사용할지 정하는 설정현재 톰캣이 NIO 기반으로 동작하는지 이해하는 기준asyncTimeout비동기 요청의 기본 timeout 시간async 요청이 오래 걸릴 때 timeout 원인 해석 가능maxParameterCount요청에서 허용할 최대 파라미터 개수파라미터 폭주나 비정상 요청으로부터 서버 보호maxPartCountmultipart 요청에서 허용할 최대 part 개수파일..

Spring/Spring MVC 2026.04.15

[Spring][Validation] 3. Spring Bean Validation

Spring은 Bean Validation API를 완전하게 지원 1. LocalValidatorFactoryBeanSpring ↔️ Bean Validation 제공자를 연결해주는 브리지/어댑터 빈✅ Binding: Spring 바인딩 모델 연동 (Errors, BindingResult)✅ i18n: Spring MessageSource 연동✅ 커스텀 검증기 주입: 빈 등록을 통해 추가 가능✅ 제공자 감지: 클래스패스의 기본 Bean Validation 제공자 1개를 자동으로 감지 및 부트스트랩✅ 인터페이스: jakarta.validation.Validator, org.springframework.validation.Validator 설정) LocalValidatorFactoryBean더보기@Conf..

Spring/Spring 2025.10.13

[Spring Boot][Actuator] 1. 모니터링

1. 상태Health애플리케이션의 전반적인 헬스 상태를 제공함✅ 현재 애플리케이션이 정상 동작하는지, 아니면 오류가 있는지 알려줌 (UP/DOWN/OUT_OF_SERVICE)✅ path: "/actuator/health"Path설명예시 / 특징status애플리케이션 전체 상태예: UP, DOWNdetails애플리케이션 세부 상태 정보management.endpoint.health.show-details 값에 해당하는 정보 출력details.*.status특정 컴포넌트의 상태예: DB, 디스크, MQ 등details.*.details해당 컴포넌트의 추가 정보예: 남은 디스크 용량, DB 연결 여부 등 설정) application.yml더보기management: endpoints.web.exposure.i..

Spring/Spring Boot 2025.09.05

[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-uri토큰을 발급한 Authorization Server의 발급자 주소단계동작의미1issuer-uri 기반으로 메타데이터 엔드포인트 호출인증 서버 정보 조회2메타데이터에서 jwks_uri 확인공개키 목록 위치 찾기3jwks_uri로 공개키 조회JWT 서명 검증용 키 확보4JwtDecoder 자동 구성JWT 검증기 생성5JWT의 iss 클레임 검증설정한 issuer와 토큰 issuer가 같은지 확인..

[Spring Security] 8-3. OAuth2 Resource Server: 동작 방식

리소스 서버는 외부 인가 서버에 인증/인가를 위임함 (요청을 통해 인증 토큰 검증) 1. Bearer Token 인증 동작 방식인증 요청 처리 흐름사용자: secured resource 요청 (Bearer Token 포함 ✅)BearerTokenAuthenticationFilterDefaultBearerTokenResolver: BearerTokenAuthenticationToken 반환 (request 기반)AuthenticationManagerResolver: AuthenticationManager 선택 (request 기반)AuthenticationManager: BearerTokenAuthenticationToken 검증인증 실패SecurityContextHolder 비움BearerTokenAut..

[Spring Authorization Server] 2. Core Model / Components

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

[JWT] 2-1. Federated Identity

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

[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) 알고리즘알고리즘서명 방식키 구조특징..