Spring/Spring Security 32

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

[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. 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-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 Security와 유사한 설정 구조 제공구성 및 제어: 고급 설정이 필요한 경우, 전체 인증 흐름 및 동작을 세밀하게 제어할 수 있음 3. Default ConfigurationOAuth2AuthorizationServerConfigurationOAuth2 Authorization Server의 최소 기본 구성 제공Authorization Server는 ..

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