분류 전체보기 612

[Spring Security] 6-3. OAuth2 Login: Advanced Configuration

0. 설정HttpSecurity.oauth2Login()OAuth2 또는 OpenID Connect를 통한 로그인 기능을 설정할 수 있도록 도와주는 DSL✅ 커스터마이징을 지원하는 옵션들을 제공 기본 설정) oauth2login더보기@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .oauth2Login(oauth2 -> oauth2 .clientRegistrationRepository(this.clientRegistrationRepository()) .authorizedClientRepository(this.authorizedClientRep..

[Spring Security] 6-2. OAuth2 Login: Core Configuration

유저가 oauth2 provider 또는 openid provider를 통해 애플리케이션에 로그인하도록 도와주는 기술Spring Security는 공식적으로 Google과 Github을 지원합니다. 1. Spring Boot Sample (Google)2. Spring Boot Property MappingsOAuth2Client 자동설정 제공표) applicaion.yml ↔️ ClientRegistration더보기Spring BootClientRegistrationspring.security.oauth2.client.registration.[registrationId]registrationIdspring.security.oauth2.client.registration.[registrationId].c..

[Wiki] OpenID

1. 설명OpenID 재단이 관리하는 인증 수단항목설명예분산형 디지털 신원 시스템사용자가 다양한 웹사이트에 하나의 계정으로 로그인할 수 있음 ID 형식- URL- XRIhttps://me.example.com/=alice@company*bob Service Discovery사용자가 입력한 OpenID 식별자를 통해 ID 제공자를 자동으로 찾는 프로토콜 Yadis 프로토콜 Service Discovery) Yadis 프로토콜 동작 방식더보기단계설명1사용자가 OpenID URL 입력2RP가 HTTP 요청 → X-XRDS-Location 헤더나 태그 탐색3XRDS 문서 위치 확인 후 해당 URL에 접근4XRDS 문서(XML)를 파싱하여 ID Provider 주소 확인5인증 요청은 이 주소로 전송 2. 구성 ..

카테고리 없음 2025.07.14

[Spring Security] 6-1. OAuth2

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

[Spring Security] 4-2. Authorization: HttpServletRequests

request levet에서의 인가를 구현할 모델을 제공합니다.특정 prefix의 url에 대한 인가 권한을 요구할 수 있음HttpSecurity 객체를 통해 인가 룰을 정의할 수 있음 1. Understanding How Request Authorization Components Work 인가 동작 순서 (AuthorizationFilter)SecurityContextHolder에서 인증 정보를 가져오는 Supplier 생성Supplier와 HttpServletRequest를 AuthorizationManager에 전달authorizeHttpRequests()에 정의된 규칙들과 매칭하여 인가 판정 인가 실패AuthorizationDeniedEvent 이벤트 발생AccessDeniedException이 ..

[Spring Security] 4-1. Authorization: Architecture

1. AuthoritiesGrantedAuthority인증된 사용자가 가지고 있는 권한을 나타내는 객체✅ 단순 문자열로 권한을 표현함✅ Authentication 객체 안에 리스트 형태로 저장됨 복잡한 권한 구조복잡한 권한 구조일 경우, 단순 문자열로 표현하기 어려움이런 경우, AuthorizationManager가 그 객체의 권한 부여 책임을 담당함✅ Authorities: getAuthority()는 null을 반환함 예시) 특정 계좌에만 접근 가능한 권한더보기권한 객체public class AccountAccessAuthority implements GrantedAuthority { private final Long accountId; public AccountAccessAuthority..

[도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지] 10. 이벤트

최범균 님의 "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 책을 정리한 포스팅 입니다. 1. 시스템 간 강결합 문제바운디드 컨텍스트들 간의 강결합✅ 외부 시스템을 호출하는 서비스가 도메인 로직에 결합하는 경우를 말함 문제점문제점설명트랜잭션 처리 애매함외부 서비스 실패 시 롤백 or 상태 변경 여부가 불명확함성능 병목외부 API 지연이 전체 시스템 응답 시간에 영향도메인-외부 로직 혼합도메인 객체가 외부 호출을 직접 다루면 유지보수 어려움 해결 방법비동기 이벤트 기반 처리로 결합도 낮추기 2. 이벤트과거에 일어난 일✅ 상태 변화의 후속 처리를 트리거하는 역할➡️ 도메인의 상태 변경과 관련된 요구사항을 이벤트를 이용해서 구현할 수 있음 구성종류: 클래스 이름으로 표현발생 시간추가 데이터..

Code 2025.06.20

[도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지] 9. 도메인 모델과 바운디드 컨텍스트

최범균 님의 "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 책을 정리한 포스팅 입니다. 1. 도메인 모델과 경계같은 엔티티라도 각각 다른 상위 도메인에 속하게 되면, 의미가 달라짐✅ 각 도메인에서 역할과 책임, 속성, 용어가 달라짐. 예) 상품더보기카탈로그: 보여주기용 정보 (상품명, 이미지, 옵션 등)창고: 실물 재고 추적용 정보 (SKU, 수량 등) 예) 회원더보기주문: 주문자배송: 보내는 사람 2. 바운디드 컨텍스트하나의 도메인 모델에 일관되게 적용되는 경계✅ 모델은 특정한 컨텍스트 하에서 완전한 의미를 가짐➡️ 올바른 도메인 모델을 개발하려면 하위 도메인마다 모델을 만들어야 함내용설명필요성하위 도메인마다 요구사항/규칙/용어가 다름구분 기준사용하는 용어가 다른지, 조직의 팀 구..

Code 2025.06.20

[도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지] 8. 애그리거트 트랜잭션 관리

최범균 님의 "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 책을 정리한 포스팅 입니다. 1. 애그리거트와 트랜잭션서로 다른 스레드/트랜잭션이 같은 애그리거트의 DB를 동시에 수정하면 충돌이 일어날 수 있음‼️ 두 스레드가 동시에 커밋하면 일관성 깨짐➡️ 해당 테이블의 행에 잠금을 걸어 동시 커밋을 막음 예시) 배송 정보 변경더보기시스템: 배송 상태를 배송으로 변경할 때사용자: 배송지 주소를 변경할 경우➡️ 시스템의 애그리거트 객체와 사용자의 애그리거트 객체는 서로 독립적 (개념적으로는 같지만 물리적으로는 서로 다름) 2. 선점 잠금먼저 들어온 트랜잭션이 커밋될 때까지 같은 행을 접근하는 다른 트랜잭션은 잠시 blocking됨 (대기)먼저 들어온 트랜잭션이 커밋되면 잠금이 해제됨➡️ ..

Code 2025.06.19

[도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지] 7. 도메인 서비스

최범균 님의 "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 책을 정리한 포스팅 입니다. 1. 여러 애그리거트가 필요한 기능도메인 영역의 코드를 작성하다 보면, 한 애그리거트로 기능을 구현할 수 없을 때가 있음✅ 도메인 / 애플리케이션 서비스에서 처리하기❌ 여러 애그리거트의 데이터/규칙을 한 번에 써야하는 유스케이스는, 한 애그리거트에 집어넣지 말기 예) Order - 결제 금액 계산더보기주문을 확정하려면 주문 애그리거트는 외부 애그리거트 정보를 읽어와서 계산하고, 결과 스냅샷만 자기 내부에 기록함애그리거트주문 시 필요한 정보(읽기)소유/책임비고Product상품 가격, 판매 가능 여부, 카테고리상품 카탈로그/정책가격은 주문 시점 스냅샷으로 Order에 저장Coupon/Promotion..

Code 2025.06.19