Spring/Security

Spring/Security

[Spring Security] 예제 프로젝트5. 리소스별 인가 및 동적 권한 설정

[Spring Security] 예제 프로젝트4. 토큰 기반 인증 구현 2023.10.18 - [Spring/Security] - [Spring Security] 예제프로젝트3. 세션 기반 인증과 토큰 기반 인증 [Spring Security] 예제프로젝트3. 세션 기반 인증과 토큰 기반 인증 2023.09.19 - [Spring/Security] - [Spring Security] 예 cares-log.tistory.com 위 포스팅과 이어집니다. 목표 이번에는 리소스 별로 권한을 설정하고 해당 권한에 따라 인가하는 기능을 구현해볼 것이다. 이 때 권한은 동적으로 변할 수 있음을 고려하여 구현해볼 것이다. Spring Security 6.x 버전 부터는 `AuthorizationFilter`를 통해 인..

Spring/Security

[Spring Security] 예제 프로젝트4. 토큰 기반 인증 구현

[Spring Security] 예제프로젝트3. 세션 기반 인증과 토큰 기반 인증 2023.09.19 - [Spring/Security] - [Spring Security] 예제 프로젝트2. API 기반 커스텀 인증 구현 [Spring Security] 예제 프로젝트2. API 기반 커스텀 인증 구현 2023.09.16 - [Spring/Security] - [Spring Security] 예제 프로젝트1. cares-log.tistory.com 현재 포스팅은 위 포스팅에서 이어집니다. 목표 이전 포스팅에서 어떤 방식으로 토큰 기반 인증을 수행할지 정해보았다. 이를 바탕으로 실제 구현을 해보자. 기본적으로 Spring Security에서는 인증에 성공하면 회원의 정보를 세션을 통해 관리한다. 인증 성공 ..

Spring/Security

[Spring Security] 예제 프로젝트3. 세션 기반 인증과 토큰 기반 인증

[Spring Security] 예제 프로젝트2. API 기반 커스텀 인증 구현 2023.09.16 - [Spring/Security] - [Spring Security] 예제 프로젝트1. 목표 및 기본 구현 [Spring Security] 예제 프로젝트1. 목표 및 기본 구현 지금까지 정수원님의 Spring Security 강의를 보며 Spring Security 포스팅을 cares-log.tistory.com 현재 포스팅은 위 포스팅에서 이어집니다. 목표 토큰 기반 인증을 구현하기 위해 세션 기반 인증과 토큰 기반 인증이 어떤 차이점이 있는지를 분석한 후, 이 차이점을 바탕으로 어떤 정책을 가지고 토큰 기반 인증을 구현할 것인지 정리해볼 것이다. 세션 기반 인증 세션 기반 인증은 위 그림처럼 사용자의..

Spring/Security

[Spring Security] 예제 프로젝트2. API 기반 커스텀 인증 구현

[Spring Security] 예제 프로젝트1. 목표 및 기본 구현 지금까지 정수원님의 Spring Security 강의를 보며 Spring Security 포스팅을 작성해 왔다. 하지만 해당 강의는 5.x 버전 대의 내용을 다루고 있었고, Spring Boot 3(Framework 6.x)가 출시되면서 Spring Security 역시 cares-log.tistory.com 현재 포스팅은 위 포스팅에서 이어집니다. 목표 이번 포스팅에서는 API로 로그인을 할 수 있도록 인증 필터를 구현할 것이다. Spring Security에서 구현해 놓은 기존의 Form Login 인증 프로세스를 분석한 후, 기존의 클래스들을 사용할 수 있다면 적절히 사용하고 정말 필요한 부분만 커스터마이징 할 것이다. 이전에 ..

Spring/Security

[Spring Security] 예제 프로젝트1. 목표 및 기본 구현

지금까지 정수원님의 Spring Security 강의를 보며 Spring Security 포스팅을 작성해 왔다. 하지만 해당 강의는 5.x 버전 대의 내용을 다루고 있었고, Spring Boot 3(Framework 6.x)가 출시되면서 Spring Security 역시 6.x 버전이 출시가 되었고, 5.x 버전과는 변경점이 많아졌다고 생각한다. 따라서 6.x 버전을 기준으로 실전에서 요구될법 한 사항들을 구현해볼 것이다. 목표 1. API를 통해 이메일과 비밀번호로 인증 2. 토큰으로 클라이언트 인가 3. 리소스별 동적으로 권한 설정 4. 메서드별 권한 설정 간단하게 회원 가입 API를 만들고, API 기반으로 이메일과 비밀번호를 통해 로그인하도록 구현해볼 것이다. 이후 세션 기반으로 회원의 인증 정보..

Spring/Security

[Spring Security] 번외. WebSecurityConfigurerAdapter Deprecation

지금까지 Spring Security가 제공하는 기능들을 커스텀하게 설정하기 위해서 `WebSecurityConfigurerAdapter`를 구현하는 방식을 사용했었다. 하지만 이 방식은 Spring Security 5.7.0 버전 부터 컴포넌트 기반의 설정을 장려하기 위해 Deprecated 되었다. 따라서 Spring Security 블로그에서 `WebSecurityConfigurerAdapter`를 구현하는 방식을 대체할 수 있는 방법을 잘 작성해 놓았다. (스프링 블로그 참고) 기존 방식은 구현 클래스에서 각 메서드를 구현하는 방법으로 설정을 구성했기 때문에 하나의 컴포넌트에서 모든 설정을 다루는 방식이었지만, 이제는 스프링 빈으로 등록하는 방식으로 변경되었기 때문에, 여러 컴포넌트로 설정을 분산..

Spring/Security

[Spring Security] 14. 아키텍쳐 - 인가 흐름

인가란 사용자가 특정 리소스나 기능에 접근할 수 있는 권한을 부여하는 프로세스를 말한다. 이전에 Spring Security에서는 인증 작업시 유저에게 권한을 부여하는 과정이 있었고, 추후 해당 유저가 리소스에 접근할 때 해당 리소스에 접근 가능한 권한인지 확인하는 것을 보았었다. 이번에는 이 과정에 대해서 자세하게 살펴보고자 한다. 우선 Spring Security에서 제공하는 권한 검증 방법은 3가지가 있다. 1. 웹 계층 검증: URL 요청에 따른 화면 단위의 레벨 보안 2. 서비스 계층 검증: 메서드 같은 기능 단위의 레벨 보안 3. 도메인 계층 검증: 객체 단위의 레벨 보안 지금까지 인가 설정을 하면서 다뤘던 것은 웹 계층 검증에 대해서였다. 나머지 기능들은 추후에 알아보도록 하고, 이번에도 웹..

Spring/Security

[Spring Security] 13. 아키텍처 - 인증 흐름

지금까지 인증과 관련해서 커스텀 설정을 하는 방법을 시작해서 세부적으로 Spring Security에서 어떻게 인증 정보를 다루는지(`Authentication` 인터페이스), 이 인증 정보는 어디에 저장(`SecurityContext`)하는지, 인증 객체 저장소는 어떻게 초기화 되는지 등의 기본 아키텍처들을 모두 배웠다. 여기서는 Spring Security에서 어떻게 인증을 수행해서 `Authentication` 객체를 만들어 내는지에 대해 구조와 함께 알아보고, 전체적으로 인증 과정들을 정리해보고자 한다. 인증 관리 - AuthenticationManager `UsernamePasswordAuthenticationFilter` 클래스의 `attemptAuthentication()` 메서드 부터 살펴..

Spring/Security

[Spring Security] 12. 아키텍처 - 인증 객체와 인증 객체 저장소

인증 객체 - Authentication 이전에 기본 인증 API에 대해 다뤘을 때 `Authentication`의 구현체가 자주 등장했었다. 이제 이 인터페이스를 상세하게 살펴보자. `Authentication`은 이름 그대로 Spring Security 전역에서 사용자의 인증 정보를 다룰 때 사용하기 위한 역할들을 추상화 해놓았다. 인증 시 `Authentication`을 구현한 객체를 `SecurityContext`에 저장하고, 인증 정보가 필요할 경우 `SecurityContext`에서 `Authentication` 객체를 꺼내어 각종 정보를 토대로 보안 로직을 수행하게 된다. 6개의 추상 메서드가 정의되어 있는데 한번 살펴보자. package org.springframework.security...

Spring/Security

[Spring Security] 11. 아키텍처 - 보안 필터 적용 과정

이전까지 어떻게 Filter의 기능을 Spring으로 위임 시키는지 위임 필터 초기화 과정과 위임 과정에 대해서 살펴보았다. 이번에는 Spring Security 필터들이 어떻게 요청에 적용되는지 과정을 살펴보자. 필터 적용 과정 이전 포스팅에서 위임 과정에 대해서 살펴 봤을 때 결국 위임된 `FilterChainProxy`의 `doFilter()`로 부터 필터 적용이 시작되는 것을 확인했다. 요청이 들어올 경우 `FilterChainProxy`의 `doFilter()`가 호출되고, 이 안에서 `doFilterInternal()`이 호출되며 필터들이 적용되는 것이다. 한번 메서드를 다시 한 번 살펴보자. package org.springframework.security.web; public class F..

괴발자
'Spring/Security' 카테고리의 글 목록