본문 바로가기

웹개발/스프링시큐리티7

스프링 시큐리티 Mysql 용 session 테이블 생성 쿼리 스프링 시큐리티 Mysql용 session 테이블 생성 쿼리 CREATE TABLE SPRING_SESSION ( PRIMARY_ID CHAR(36) NOT NULL, SESSION_ID CHAR(36) NOT NULL, CREATION_TIME BIGINT NOT NULL, LAST_ACCESS_TIME BIGINT NOT NULL, MAX_INACTIVE_INTERVAL INT NOT NULL, EXPIRY_TIME BIGINT NOT NULL, PRINCIPAL_NAME VARCHAR(100), CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID) ) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; CREATE UNIQUE INDEX SPRIN.. 2021. 4. 24.
5. 스프링 시큐리티 - Remember Me 기능 구현 사용자가 로그인 후 로그인을 유지 시켜주는 기능이 있다. 사용자 세션이 만료가 되어도 Remember Me 쿠키가 셋팅되어 있으면 자동으로 로그인하는 기능이다. 스프링 시큐리티에서 제공해주는 Rmember Me기능을 구현해보겠다. 이번 포스트는 이전 포스트에 이어서 작성하니 참조하기 바란다. 세션 설정 테스트를 위한 세션시간을 조정하기 위해 HttpSessionListener인터페이스 구현체를 하나 만든다. @WebListener 어노테이션으로 리스너를 등록해주고, 이 리스너는 스캔할수 있게 Application클래스에 @ServletComponentScan추가한다. 세션을 10초로 설정을 해준다. 10초이지만 시간이 더 지나야 세션이 만료된다. SessionListener @WebListener pub.. 2021. 4. 19.
4. 스프링 시큐리티 - 회원가입 이번에는 회원가입후 로그인 처리를 한번 해보자 프로젝트는 이미 셋팅했다고 가정하고 진행을 한다. 프로젝트 설정 build.gradle plugins { id 'org.springframework.boot' version '2.4.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.samlasoft' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { i.. 2021. 4. 19.
3. 스프링 시큐리티 - h2base 적용하기 스프링시큐리티에 db를 적용해보자. 여기서는 적용하기 쉽게 h2base적용해보자. 프로젝트 생성은 이미 되있다고 가정하고 진행을 한다. 먼저 h2db를 셋팅하고 유저 테이블과 유저엔티티를 만든후 유저를 한명 등록하고 스프링시큐리티에서 로그인하는 걸 한번 구현해보겠다. build.grade 프로젝트는 gradle로 설정을 한다. plugins { id 'org.springframework.boot' version '2.4.4' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.samlasoft' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' config.. 2021. 4. 17.
2. 스프링시큐리티 - 로그인 페이지 변경 이전에는 스프링시큐리티 기본설정으로 이용을 하였다. 그래서 기본적으로 스프링시큐리티가 제공하는 로그인 페이지를 이용하였지만 이번에는 로그인페이지를 직접 작성해서 해보자. 부트스트랩의 로그인 페이지 샘플을 가지고 구현을 해보겠다. 여기서는 기본 프로젝트 셋팅은 끝났다고 가정하고 시작하기로 한다. build.gradle 설정 프로젝트 생성후 라이브러리 설정은 다음과 같다. plugins { id 'org.springframework.boot' version '2.4.4' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.samlasoft' version = '0.0.1-SNAPSHOT' sourceCom.. 2021. 4. 15.
1. 스프링 시큐리티 - 기본 로그인 스프링 시큐리티에서 제공하는 기본 로그인을 알아보자 1. 프로젝트 생성 프로젝트는 다음과 같이 생성한다. 2. 서버를 실행 서버를 실행하고 localhost:8080으로 접속한다. 그러면 로그인 페이지가 바로 나온다. spring-security가 자동으로 생성해주는 로그인 페이지이다. username은 user password는 로그에서 찾아본다. 다음그림과 같이 usernam과 password를 입력하고 로그인을 하면 빈 에러 페이지가 나온다. 3. index.html 작성 resources/templates아래에 index.html 작성한다. Hello World! 서버를 다시 시작한다. 로그인을 하면 인덱스 페이지가 나온다. 4. 로그레벨 debug로 수정 로그를 더 상세하게 보기 위해서 appl.. 2021. 4. 12.
스프링 시큐리티에서 중요한 컴포넌트들 스프링 시큐리티를 적용하려고 할때 먼저 알면 좋은 컴포넌트들을 알아보자 DelegatingFilterProxy, FilterChainProxy, SecurityFilterChain 스프링 시큐리티는 필터를 통해서 인증과 권한을 체크한다. 여기서 필터는 서블릿컨테이너에서 관리하는 서블릿 필터와 스프링컨테이너에서 관리하는 필터 두가지가 있다. 서블릿필터에서는 스프링의 빈을 사용하지 못하기 때문에 스프링은 서블릿필터에서 스프링 빈을 사용할수 있는 DelegatingFilterProxy를 서블릿 필터로 등록을 해둔다. DelegationFilterProxy는 다시 FilterChainProxy라는 스프링 시큐리티에서 사용하는 필터에 위임을 하고 이 필터에는 filterChain이라는 변수가 있는데 이변수는 Se.. 2021. 4. 4.