spring security in action second edition
Spring Security - SSCM
SSCMSSCM(Spring Security Crypto Module)은 키 생성(Key generators)과 암호화 및 복호화 기능(Encryptors)을 포함한다. 이 모듈은 보안 관점에서 중요한 데이터 보호를 돕기 위해 다양한 암호화 및 해시 기능을 제공한다.이들에 대해 알아보자. Key generatorsKey generators는 암호화 혹은 해싱 알고리즘에 필요한 특정 종류의 키를 생성하는 데 사용되는 객체이다. 키를 생성하는 인터페이스는 아래 두 가지가 있다.StringKeyGeneratorBytesKeyGenerator StringKeyGeneratorStringKeyGenerator의 모습은 아래와 같다.public interface StringKeyGenerator { Strin..
Spring Security - PasswordEncoder
이번엔 UserDetailsService의 단짝인 PasswordEncoder에 대해 알아보겠다.PasswordEncoder 형태PasswordEncoder 모습은 아래와 같다.public interface PasswordEncoder { String encode(CharSequence rawPassword); boolean matches(CharSequence rawPassword, String encodedPassword); default boolean upgradeEncoding(String encodedPassword) { return false; } }encode(...): 제공된 문자열을 인코딩해 반환matches(...): 인코딩 된 문자열과 기본 비밀번호를 비교upgrad..
Spring Security - UserDetails, UserDetailService
이전에 Spring Security의 Architecture와 매우 가볍게 일부 사용법을 다뤄보았다.이번엔 UserDetailsService를 깊게 알아보자. User Details Service 상세위 그림엔 User Details Service만 나와있지만 상세하게 보면 인터페이스가 더 구분된다.UserDetailsService는 이름으로 사용자를 검색하는 역할을 하는 인터페이스로 인증을 완료하는데 필요하다.UserDetailsManager는 사용자에 대한 CRUD 작업을 담당하는 인터페이스이다.두 인터페이스는 인터페이스 분리 원칙(ISP: Interface Segregation Principle)을 지킨다.이를 각각 구현함으로써 유연성이 향상된다.UserDetails는 Spring Security의..
Spring Security - Spring Security 겉핥기
프로젝트를 다루면서 Spring Security를 알아보자.Spring Security 동작 확인Spring Tool Suite 4SpringBoot 3Java 17이번엔 간단히 REST endPoint에 접근하는 것으로 Spring Security를 알아볼 것이다.xml에 필요한 종속성은 아래와 같다. org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-security 이후 endPoint를 위한 Controller를 구현해 보자.@RestControll..
Spring Security - Spring Security를 공부하는 이유
오늘부터 Spring Security in Action, Second Edition을 활용해 Spring Security를 공부할 것인데 먼저 학습 이유와 목적을 정리하고자 한다. Security를 공부하는 이유SW 개발은 크게 시스템에 주어지는 입력에 대한 출력에 대한 기능적 요구사항(Functional Requirements)과 보이지 않는 시스템의 속성이나 제약 사항에 대한 비기능적 요구사항(Non-Functional Requirements)으로 구분된다. (성능, 신뢰성, 보안성, 가용성 등) 사용자의 입장에선 기능적 요구사항이 직관적으로 보이기에 SW Application을 개발할 때, 특히 개발 학습 초기에 이에 중점을 두는 경우가 많지만 비기능적 요구사항이 더욱 결정적일 수 있기에 이도 ..