Spring 141

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

[Spring Security] 7-1. 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-4. 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를 사용함 작동 방식사용자가 로그아웃 요청 (/logout)Spring Security는 OidcClientInitiatedLogoutSuccessHandler 실행해당 handler는 end_session_endpoint로 redirect 요청 보냄파라미터: id_token_hint, post_lo..

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