본문 바로가기

Spring Security5

스프링 시큐리티에서 중복 로그인 방지 및 세션 고정 공격 방지 스프링 시큐리티를 사용하면 동일한 아이디로 중복 로그인 방지 하는것을 간단히 구현할 수 있습니다. 또한 세션 고정 공격을 기본적으로 방어하도록 되어 있습니다. 이 두 가지를 같이 이야기 하는 이유는 두 가지가 같은 태그로 설정이 되기 때문입니다. 먼저 중복 로그인을 방지하는 방법을 알아보겠습니다. 예제 소스는 글 하단에 첨부하여 두었습니다. 이 예제는 "스프링프레임웍 - Spring Security(1) : 기본 설정" 글의 예제를 기본으로 하여 테스트 하였습니다. 스프링 시큐리티 설정파일인 /src/main/webapp/WEB-INF/spring/security-context.xml 파일의 부분에 다음을 추가합니다. 태그를 이용해서 중복 로그인 방지를 설정합니다. 각 속성의 의미는 다음과 같습니다. -.. 2018. 4. 20.
전자정부표준프레임워크 Spring Security 사용시 로그인한 사용자정보에 추가정보 넣기 전자정부표준프레임워크에서 스프링 시큐리티가 적용되어 있을 때 로그인한 사용자의 정보를 얻기 위해서는 다음과 같이 사용합니다. import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.com.cmm.LoginVO; ... // 로그인 여부 확인 Boolean isLogin = EgovUserDetailsHelper.isAuthenticated(); // 로그인한 사용자 정보 LoginVO user = null; if(isLogin) { user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); } 로그인 후 세션에 저장되어 있던 Log.. 2018. 4. 20.
스프링프레임웍 - Spring Security(3) : 사용자/권한 정보 DB사용하기 앞서 "스프링프레임웍 - Spring Security(2) : 커스텀 로그인 화면 및 권한에 따른 접근 제어"에서 로그인 화면을 원하는 형태로 만드는 방법에 대해서 알아 보았습니다. 지금까지의 기본설정과 화면 커스터마이징에서는 사용자 정보와 권한 정보가 모두 security-context.xml 파일 안에 있었습니다. 이번에는 이 정보들을 DB 저장하고 이용할 수 있도록 해 보겠습니다. 데이터베이스는 Oracle을 사용합니다. 먼저 사용자 정보와 권한정보를 저장할 테이블 구조 입니다. 이 테이블들은 스프링 시큐리티의 DB 지원 기본 구조를 키구조만 조금 바꾼것 입니다. 1. 사용자/권한 테이블 사용자 권한 처리를 위해서 총 5개의 테이블로 구성됩니다. 테이블을 생성하고 기본 데이터를 입력하는 쿼리파일은 .. 2018. 4. 9.
스프링프레임웍 - Spring Security(2) : 커스텀 로그인 화면 및 권한에 따른 접근 제어 앞의 글 "스프링프레임웍 - Spring Security(1) : 기본 설정"에 이어 이번에는 커스텀 로그인 화면을 만드는 방법을 알아보겠습니다. 전체소스는 하단에 추가되어 있습니다. 1. 스프링 시큐리티 태그라이브러리를 사용하기 위한 의존성을 추가합니다. 메인화면에서 로그인이 되어 있지 않으면 로그인 링크를 보여주고, 로그인이 되어 있으면 로그아웃 링크를 보여주기 위해서 사용됩니다. org.springframework.security spring-security-taglibs 4.2.1.RELEASE 2. 커스텀 로그인 화면을 사용하기 위한 설정을 추가 합니다. 커스텀 로그인 화면 제공 및 권한(역할)에 따른 접근 제어도 테스트 해봅니다. - provider 를 통해 ROLE_USER, ROLE_ADM.. 2018. 4. 8.
스프링프레임웍 - Spring Security(1) : 기본 설정 스프링 시큐리티는 지금까지 직접 구현해왔던 아이디/비밀번호를 입력하고 로그인하여 사용자를 인증(Authentication)하고, 로그인후 프로그램의 각각의 기능에 대한 권한을 체크(Authorization)하는 작업을 구현해둔 보안 프레임웍 입니다. 프로그램외에 리소스(이미지 등)에 대한 접근도 제어할 수 있고, CSRF(Cross Site Request Forgery) 공격 방어, 세션 고정(Session Fixation) 공격 방어 및 다중 접속 방지 등도 간단하게 구현할 수 있습니다. 이제부터 스프링 시큐리티를 사용하는 방법에 대해 알아 보도록 하겠습니다. 이 글에서는 스프링 시큐리티 4.2.1 버전으로 테스트 해 봅니다. 1. 의존성 등록(pom.xml) 스프링 시큐리티 라이브러리를 포함 시킵니다.. 2018. 4. 8.