분류 전체보기 610

[JWT] 2-1. Federated Identity

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

카테고리 없음 2025.07.22

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

카테고리 없음 2025.07.22

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

[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 객체의 대응되는 속성으로 간단히 설정할 수 있음표) applicaion.yml ↔️ ClientRegistration더보기Spring BootClientRegistrationspring.security.oauth2.client.registration.[registrationId]registratio..