본문 바로가기

Spring Boot

(173)
JWT의 구조, 원리 : JWT의 구조 이해 항목설명Header토큰 타입 및 서명 알고리즘 정의Payload사용자의 정보(Claims) 포함Signature위변조 방지를 위한 서명 값Claims 구분Registered / Public / Private주의사항민감한 정보 포함 금지, 토큰 만료 관리 필수 - JWT의 구조를 구성하는 세가지 핵심 요소(Header, Payload, Signature) 이해하기 - 각 구성 요소가 어떤 역할을 하는가 - JWT 가 왜 JSON 기반 토큰이라고 불리는가 - Claims(클레임) 의 종류와 사용 목적 구분 - 실무에서 JWT 를 설계할 때 어떤 정보를 담을지 판단하기JWT의 구조문자열 형태로 전달되며, 내부적으로 세가지 파트로 구성된다 Header, Payload, Signature 부분은 .(닷, 점)으..
JWT의 구조, 원리 : JWT의 정의와 표준 Json Web TokenRFC 7519 : https://datatracker.ietf.org/doc/html/rfc7519 - JWT의 정의와 표준 이해 - JWT가 토큰 기반 인증에서 어떤 위치를 차지하는가 - JWT가 주로 사용되는 활용 사례 - JWT가 왜 널리 사용되는가? - JWT를 사용할 때 고려해야할 장단점JWT의 정의, 표준1. JWT(JSON Web Token)JSON 객체를 이용하여 안전하게 정보를 주고 받기 위한 토큰 형식임RFC 7519 표준으로 정의되어 있으며, 주로 인증(Authentication)과 권한 부여(Authorization) 를 위해 사용된다JSON 기반 : 사람이 읽기 쉽고 기계가 처리하기 쉬운 JSON 형식으로 작성된다URL-safe : URL에 포함될 수 ..
토큰 기반 인증의 개념, 필요성 : 토큰 기반 인증이 적합한 상황 - 토큰 기반 인증이 사용되기에 적합한 실제 상황들 - RESTful API 설계와 토큰 기반 인증의 관계 - 마이크로서비스 아키텍처에서 토큰 인증이 필수적인 이유 - SPA 클라이언트와 토큰 인증의 자연스러운 연결성 - 모바일 애플리케이션 환경에서 세션 기반 인증의 한계를 극복하는 방법토큰 기반 인증이 적합한 상황토큰 기반 인증은 단순히 "세션 기반 인증을 대체한다" 라는 특징을 넘어, 특정한 아키텍처나 애플리케이션 환경에서 반드시 필요하게 된다 1. RESTful API 설계와 토큰 인증RESTful API는 무상태성(stateless) 원칙을 따르는게 핵심이다서버는 클라이언트 상태를 보관하지 않고, 요청에 필요한 모든 정보는 클라이언트가 직접 전달해야한다이 때 토큰 기반 인증은 각 요청에 토큰을 포..
토큰 기반 인증의 개념, 필요성 : 토큰 기반 인증의 개념과 특징 - 토큰 기반 인증(Token-Based Authentication) 의 개념 - Stateless 아키텍처의 의미, 필요성 - 토큰의 자체 포함성(self-contained) 개념 - 서버 부하 분산과 확장성 측면에서 토큰 기반 인증의 장점 - 세션 기반 인증과 비교하여 토큰 기반 인증의 특징 구분하기토큰 기반 인증 개요토큰 기반 인증은 사용자가 로그인에 성공하면서버가 세션을 저장하지 않고, 대신 토큰(Token)을 발급하여클라이언트가 이를 보관하고 요청마다 서버에 전달하는 방식이다 이 방식은 서버가 사용자의 상태(Session)를 저장하지 않으므로 Stateless 아키텍처를 따른다Stateless 아키텍처의 이해토큰 기반 인증은 Stateless(무상태성) 아키텍처의 핵심이다서버는 클라이언트의 인..
토큰 기반 인증의 개념, 필요성 : 세션 기반 인증, 한계 (복습) 간단하게 복습하기 - 세션 기반 인증의 동작 원리 - 세션 기반 인증이 가지는 한계점 - 서버 확장성 문제와 분산 환경에서의 세션 관리 어려움 - 토큰 기반 인증의 필요성이 등장한 배경세션 기반 인증 복습하기세션 기반 인증(Session-Based Authentication) 은 전통적 웹 애플리케이션에서 가장 많이 사용되는 방식임사용자가 로그인하면 서버는 사용자 정보를 세션에 저장하고, 브라우저는 세션 ID를 쿠키로 보관한다 이 방식은 단일 서버 환경에서는 단순하고 직관적이며 많이 사용되어왔다 1. 세션 저장 구조/session-stroe - sessionId0001 - > { username: "b1uffer", role: "USER"} - sessionId0002 - > { username: "..
세션 기반 사용자 인가 구현 : 도메인 객체 보안(ACL) - 도메인 객체 수준 인가(Authorization) 개념 - 객체 단위에서 접근 제어가 필요한 이유 - 소유권 기반 접근 제어를 구현하는 방법 - 커스텀 Evaluator 를 만들어서 ACL(Access Control List)를 적용하는 방법 - 실무에서 ACL을 적용할 때 고려해야 할 보안 및 유지보수 포인트들도메인 객체 수준 인가(Access Control List, ACL) 개요URL 기반이나 메서드 기반 인가에서는 주로 요청 경로(URL)나 메서드 실행 전후(메서드)를 기준으로 한다도메인 객체 보안(ACL) 은 객체 자체의 속성을 기준으로 접근을 제어한다 가령, 사용자가 특정 문서를 조회하려 할 때 그 문서의 소유자(owner) 가 본인인지 확인하는 방식임 예시블로그 게시글 수정은 작성자 본..
세션 기반 사용자 인가 구현 : 메서드 보안을 통한 인가 - 메서드 보안을 통한 인가(Authorization)의 개념 - @EnableMethodSecurity 를 활용하여 메서드 수준에서 보안 활성화하기 - @PreAuthorize, @PostAuthorize 애너테이션 사용법 - 메서드 파라미터를 활용한 동적 인가 - SpEL 을 이용해서 유연한 접근 제어하기메서드 보안 개요URL 기반 인가는 요청 경로에 따라 접근을 제어하지만, 메서드 보안은 실제 서비스 계층이나 비즈니스 로직의 메서드 실행 여부를 제어한다이러한 방식은 컨트롤러, 서비스 메서드 단위에서 더욱 정밀한 접근 제어를 가능하게 한다@EnableMethodSecurity 설정하기메서드 보안을 활성화하려면, Spring Security 설정 클래스에서 @EnableMethodSecurity 를 선..
세션 기반 사용자 인가 구현 : URL 패턴 기반 인가 설정 - URL 패턴 기반 인가(Authorization) 개념 - HttpSecurity.authorizeRequests() 메서드를 활용한 권한 설정 방법 - requestMatchers(), hasRole(), hasAuthority(), access() 메서드의 차이 - 권한 계층 구조(Role Hierarchy) 를 설정하여 실무에서 효율적으로 권한 관리하기 - 예제와 다이어그램을 통해 인가 흐름 이해하기URL 패턴 기반 인가 설정하기세션 기반 인증이 완료된 후, 사용자가 특정 URL 에 접근할 수 있는지에 대한 것을URL 패턴 기반 인가 설정을 통해 제어할 수 있다Security 에서는 HttpSecurity 의 authorizeHttpRequests() 메서드를 사용하여 URL 별 접근 권한을 설..