Spring/security 17

[시큐리티] UserDetailsService

1. UserDetails 1) 개념 스프링 시큐리티가 관리하는 사용자를 나타냄 2) 특징 하나 이상의 권한을 가짐 UserDetails 계약을 구현해서 프레임워크가 이해할 수 있게 사용자를 기술 3) UserDetails 인터페이스 코드 public interface UserDetails extends Serializable { // 인증과 관련된 세부 정보, 사용자 자격 증명을 반환하는 메서드 String getUsername(); // 사용자 이름 반환 String getPassword(); // 사용자 암호 반환 // 사용자가 애플리케이션의 리소스에 접근할 수 있도록 권한 부여하기 위한 메서드 Collection

Spring/security 2023.03.13

[시큐리티] 구성 요소 재정의

1. 방법 직접 구현 만들기 스프링 시큐리티에 있는 구현 이용하기 2. UserDetailsService 재정의 1) 방법 빈으로 재정의 configure 메서드로 설정 2) InMemoryUserDetailManager 이용 특징 콘솔에 자동 생성된 암호가 출력되지 않고 메모리에 자격 증명을 저장해서 스프링 시큐리티가 요청을 인증할 때 이용할 수 있게 한다 3. PasswordEncoder 재정의 1) 방법 빈으로 재정의 configure 메서드로 설정 2) NoOpPasswordEncoder 이용 특징 NoOpPasswordEncoder는 암호에 암호화나 해시를 적용하지 않고 일반 텍스트처럼 처리한다. 그래서 운영 단계에서 사용하면 안 되기 때문에 클래스 개발자가 deprecated라고 지정해놓음. ..

Spring/security 2023.03.10

[시큐리티] 인증 방법

1. http basic 인증 1) 개념 2) 방법 username:password 문자열을 Base64로 인코딩한다 Authorization 헤더의 값으로 Basic + 위의 인코딩값을 설정하고 보낸다 3) 설정 @Configuration public class ProjectConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception{ http.httpBasic(); http.authorizeRequests().anyRequest().authenticated(); } } 4) 특징 자격 증명의 기밀성을 보장하지 않는다 base64는 단지 전송의 편의를 위한..

Spring/security 2023.03.10

[시큐리티] 스프링 시큐리티 인증 프로세스 구성 요소

1. 스프링 시큐리티의 인증 프로세스에 포함된 주 구성 요소와 관계 1) 인증 필터 인증 요청을 인증 관리자에 위임하고 응답을 바탕으로 보안 컨텍스트를 구성한다 2) 인증 관리자 인증 공급자를 이용해 인증을 처리한다 3) 인증 공급자(AuthenticationProvider) 인증 논리를 구현한다 사용자 관리 책임을 구현하는 사용자 세부 정보 서비스(UserDetailService)를 인증 논리에 이용한다 암호 관리를 구현하는 암호 인코더(PasswordEncoder)를 인증 논리에 이용한다 4) 보안 컨텍스트 인증 프로세스 후 인증 데이터를 유지한다 2. UserDetailsService 1) 개념 사용자 이름으로 사용자 세부 정보를 검색하는 객체 2) 하는 일 사용자에 관한 세부 정보를 관리 인증 공..

Spring/security 2023.03.10

[시큐리티] 스프링 시큐리티 기본 개념 및 보안에 대한 개념

1. 스프링 시큐리티 개념 스프링 애플리케이션에 보안을 적용하는 과정을 크게 간소화하는 프레임워크 2. 스프링 시큐리티 방법 어노테이션, 빈, 메서드 등 스프링 방식의 구성 스타일을 이용해서 애플리케이션 수준의 보안을 정의한다 보안을 구성하는 방법은 본인 하기 나름이다. 간단하게 할 수도 있고, 복잡하게 할 수도 있다 보통, 누가 작업을 수행할 수 있는지 결정(인증), 특정 사람이 특정 데이터를 이용할 수 있는지 결정(권한), 데이터 전송 및 저장 과정에서 올바른 전송 및 저장인지 결정하는 방식 사용 인증: 애플리케이션이 사용자를 식별하는 방법 권한 부여: 사용자 식별 후 나중에 이들이 무엇을 하도록 허용해야 하는지 결정 3. 보안이란 애플리케이션은 전화번호, 이메일 주소, 신용카드 번호 등의 정보에 접..

Spring/security 2023.03.09

[시큐리티] 초기 세팅

1. 프로젝트 생성 자바 11, 스프링 부트 2.x spring dev tools, spring data jpa, spring security, lombok, mustache, mysql driver, spring web 2. application.properties ## server server.address=localhost server.port=8080 server.servlet.context-path=/ //연결될 url 설정 // 인코딩 설정 server.servlet.encoding.charset=UTF-8 server.servlet.encoding.enabled=true server.servlet.encoding.force=true ## my sql spring.datasource.url=j..

Spring/security 2023.03.09