Spring 129

[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-3. 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 흐름의 ..

[Spring Security] 7-2. OAuth2 Client: Core Interfaces and Classes

1. ClientRegistrationOAuth 2.0 또는 OpenID Connect 1.0 제공자에 등록된 클라이언트 정보를 나타내는 객체 필드) 기본 필드더보기필드명설명값registrationId이 클라이언트를 구분할 수 있는 고유 IDgoogle, oktaclientIdOAuth 제공자에 등록된 클라이언트 ID clientSecret클라이언트 시크릿 clientAuthenticationMethod클라이언트 인증 방식client_secret_basicclient_secret_postnoneprivate_key_jwtauthorizationGrantType인증 방식 (grant type)authorization_codeclient_credentialspasswordurn:ietf:params:oaut..

[Spring Security] 6-3. OAuth2 Login: OIDC Logout

1. Local Logout2. OpenID Connect 1.0 Client-Initiated Logoutclient가 사용자의 로그아웃을 OpenID Provider까지 전달하는 방식Discovery + Session Management를 지원하는 OP만 가능issuer-uri 설정을 통해 end_session_endpoint 자동 획득OidcClientInitiatedLogoutSuccessHandler를 사용함 설정) SecurityFilterChain더보기@Configuration@EnableWebSecuritypublic class OAuth2LoginSecurityConfig { @Autowired private ClientRegistrationRepository clientRegistrat..

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

1. 설정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-1. 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].cl..

[Spring Security] 7-1. OAuth2 Client

1. OAuth2 Client로그인 흐름을 시작하고, 응답으로 토큰을 받아 API 요청에 사용할 수 있게 해주는 애플리케이션✅ registration: OAuth2 client로서 내 애플리케이션 등록 정보✅ provider: 통신할 Authorization Server or OIDC Provider 등록 정보➡️ 인증/인가 서버와의 통신을 담당함 설정) registration 등록더보기더보기spring: security: oauth2: client: registration: my-oidc-client: provider: my-oidc-provider client-id: my-client-id clie..

[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..

[Spring for Apache kafka] Apache Kafka Streams Support

1. Basics주요 구성 요소구성 요소설명예시StreamsBuilder스트림 처리 로직을 정의하는 객체 생성KStream, KTable 등KafkaStreams스트림들을 실제로 실행하는 객체- kafka 클러스터와 연결- 스트림 처리 시작 (토폴로지 실행)- 스트림 처리 종료- KStream연속된 이벤트 스트림 - insert (append-only 로그 형식)카드 결제 기록, 서버 로그 등- KTable상태 변경 기록- update집계 테이블 등 동작 흐름StreamsBuilder: Stream 처리 로직 정의StreamsConfig: 설정 (Kafka 클러스터 정보, 기본 직렬화/역직렬화 설정, 보안 설정 등)KafkaStreams: 스트림 처리 시작KafkaStreams: 스트림 처리 종료 2. ..