고종봉 mercujjang@gmail.com 스프링 시큐리티를 이용한 웹 보안 고종봉 mercujjang@gmail.com.

Slides:



Advertisements
Similar presentations
CI(Continuous Integration) 이학성. C ontinuous I ntegration? 2 지속적으로 품질관리 를 적용하는 과정 개발자가 기존 코드의 수정 작업 을 시작할 때, 코드 베이스의복사본을 받아서 작업을 시작하면서 코드의 변경.
Advertisements

일정 관리 다이어리 제작 JSP Programming with a Workbook. 학습 목표  사용자의 일정을 관리할 수 있는 다이어리에 대하여 알아보자. JSP Programming with a Workbook2.
을지대학교 무선 네트워크 사용 방법 2010 년 06 월 01 일. 을지대학교 무선 네트워크 사용 방법 1. PC 무선랜 카드 활성화 및 체크 1 단계 : 시작 -> 설정 -> 네트워크 설정 2 단계 : 무선 네트워크 설정 선택 -> 마우스 버튼 오른쪽 클릭 -> 사용.
임직원 APP 설치 가이드 경영전략처 정보기획 TF 팀. 임직원 App- 운영체제 구분  안드로이드 갤럭시, 갤럭시노트, 갤럭시 S4 [ 삼성전자 ] 옵티머스 [LG 전자 ] 베가 [ 팬텍 모토로이 [ 모토롤라 ]  ios 아이폰 [ 애플.
1 08 시스템 구성도 고려사항 * 웹 서버 클러스터 구성  클러스터 구축은 ㈜ 클루닉스의 Encluster 로 구축 (KT 인증,IT 인증 획득, 실제 클러스터 구축 사이트 200 여곳 )  웹 서버 클러스터는 Dynamic, Static, Image.
Korea Virtual Payment 모바일 안전결제 (ISP) 서비스 모델 - iPhone 한국버추얼페이먼트㈜ 기술연구소
LOGO Open API 를 이용한 SNS 위젯 개발 프로젝트 최종 발표 4 조 채상혁 윤호선 이재규.
1 Copyright© 2014 Korea Trade-Investment Promotion Agency. All Rights Reserved. GP USA 2016 in Chicago 사업신청 매뉴얼 ( 국내기업용 ) GP USA 2016 in Chicago 사업신청 매뉴얼.

Security Solutions (S/W) - Fortify
컴퓨터응용과학부 Java Enterprize(DB) 제 1 주
Nov Youn-Hee Han Term Project 안내 Nov Youn-Hee Han
2. 앱 개발환경 구축 Step by Step 안드로이드 프로그래밍 쉽게 시작하는 안드로이드 4.4 앱 개발.
新 연구관리 프로그램 SAP 설치 안내 1. SAP GUI 7.3 설치 2전자증빙 솔루션 설치 배포 :
네오플러스 인트라넷 통합인증 설정 매뉴얼.
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
Sep Youn-Hee Han 웹서비스 컴퓨팅 수업을 위한 코딩 환경 준비 Sep Youn-Hee Han
Outlook 에서 POP3 설정 방법.
운영체제 박상민.
컴퓨터응용과학부 Java Enterprize(DB) 제 13 주
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
컴퓨터응용과학부 Java Enterprize(DB) 제 12 주
25강. Security-I 보안 관련 프로젝트 생성 보안 관련 라이브러리 추가 보안 관련 설정 파일 만들기
Visual Basic .NET 처음 사용하기.
FTP 프로그램 채계화 박재은 박수민.
고종봉 스프링 시큐리티와 OAuth.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
AutoBase10 설치 / 데모 프로젝트 실행.
D / K / I / T / E / C / H / N / O / L / O / G / Y
소프트웨어 분석과 설계 Struts2 & JBOSS 설치하기
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
KHS JDBC Programming 4 KHS
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
2장 JSP 개발 환경 설정 이장에서 배울 내용 : JSP 페이지를 작성하기 위한 개발환경을 설정하고, 웹 어플리케이션 개발을 위해 반드시 이해하여야 할 웹 어플리케이션 폴더 구조에 대해 학습한다. 또한 요청된 JSP 페이지가 어떠한 처리과정을 거쳐 응답이 이루어지는가에.
Wireless Java Programming
1. SSLVPN 접속 방법 Internet Explorer 실행(타 브라우저 사용 불가)
CHAP 13. 방명록 만들기 실습.
‘2012년 정보화 사업 교육 버그추적시스템(BTS) 사용 절차 2012, 02.
Mobile SHI 사용자 메뉴얼 중공업조선CI그룹 전진형( )
UpToDate® Anywhere(UTDA)
2015학년도 PHP 기말 레포트 로그인 홈페이지 제작.
본 문서의 내용은 컬러로 인쇄를 해야 정확한 내용 이해가 가능 합니다.
개발 환경 세팅.
1. SSLVPN 접속 방법 Internet Explorer 실행(타 브라우저 사용 불가)
Smart Workplace 개발자 가이드
Adobe 제품 다운로드 및 설치 방법 안내 Adobe Creative Cloud Adobe License 권한을 받으신 분
Flash Communication Server
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
기말 프로젝트 계획 MVC 패턴 기반 웹 애플리케이션 개발 프로젝트명 : 팀명 : 팀원 :
데이터 베이스 DB2 관계형 데이터 모델 권준영.
법령안편집기 연결버튼 표시가 안 될 경우 정부입법지원센터( 입안 및 심사안을 진행시
ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts
PMIS 서버 설정 환경설정 작성자 : 배경환.
Spring Security 2015 Web Service Computing.
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
STS 에서 웹 서버 설치 방법.
웹 어플리케이션 보안 2016년 2학기 11. Enhancing Security.
STS 또는 Eclipse 에서 프로젝트를 Export 하고 Import 하는 방법
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
JSP Programming with a Workbook
9 브라우저 객체 모델.
UpToDate® Anywhere(UTDA)
접근제어 솔루션 계정등록 및 클라이언트 설치.
이 프레젠테이션은 PowerPoint의 새로운 기능에 대해 안내하며, 슬라이드 쇼에서 가장 잘 보입니다
8주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
7 생성자 함수.
Presentation transcript:

고종봉 mercujjang@gmail.com 스프링 시큐리티를 이용한 웹 보안 고종봉 mercujjang@gmail.com

발표의 목적/목표 목적 목표 step by step… 웹 애플리케이션 보안 요구사항을 쉽고 효과적으로 해결할 수 있는 스프링 시큐리티를 좀더 널리 알려 보고자 그 결과로 개발자들이 불필요한 중복개발의 덫에서 벗어날 수 있다면… 스프링 시큐리티에 대해 좀더 쉽게 다가갈 수 있다면… 목표 스프링 시큐리티 소개 스프링 시큐리티 사용하기 보안 기본 개념 설명 스프링 시큐리티 응용하기 step by step…

소개. 스프링 시큐리티? 보안? ‘봄 보안’이 도대체 뭐야..

Spring Security 스프링 시큐리티 소개 배경 목적 스프링 개발자들의 메일링 리스트에 스프링-기반의 보안 구현체는 고려하고 있지 않는지에 대한 질문이 올라왔다. 2003년 후반 "스프링을 위한 아씨지 시큐리티 시스템"으로 출발. 심플한 시큐리티 구현체가 완성. 초기 사용 시작. 2004년 3월에 정식으로 출범. 몇 년 후 스프링 프레임웍의 공식적인 서브프로젝트가 됨 2007년 후반에 공식적으로 스프링 포트폴리오 프로젝트가 되었고, "스프링 시큐리티"로 브랜드가 변경 목적 J2EE-기반 엔터프라이즈 소프트웨어 애플리케이션을 위한 종합적인 보안 서비스를 제공 Spring Security

시작. 스프링 시큐리티 적용하기 초간단 네임스페이스 설정 “백문이 불여일코드”

준비물… Eclipse IDE 관련 라이브러리 JARs 포함 라이브러리 : spring-framework-3.0.2.RELEASE.zip spring-framework-3.0.2.RELEASE-dependencies.zip http://www.springsource.com/download/community spring-security-3.0.2.RELEASE.zip http://www.springsource.com/download/community?project=Spring%20Security

배포버전 다운받기 http://springsource.org

Maven ? 난 한 놈만 패!!! 선택과 집중..

작업 #1 웹 프로젝트 생성 eclipse IDE 실행 New Project > Dynamic Web Project 생성 Index.jsp 작성 Run As > Run on Server

작업 #2 초간단 HTTP 보안 적용하기 Web App Libraries 추가 WEB-INF/web.xml 수정 applicationContext-security.xml 작성 /Index.jsp 작성 /admin/index.jsp 작성

개념정리. 보안 기본개념 소개 인증? 인가? …

흐음.. 보안 핵심 개념 인증(Authentication) 인가(Authorization) 자신이 누구라고 주장하는 사람의 주체(principal, "주체"는 보통 사용자를 의미하며, 애플리케이션을 사용하는 장비나 시스템이 될 수도 있다)를 확증하는 절차 인가(Authorization) 주체가 해당 애플리케이션 기능을 사용할 수 있도록 허용되었는지를 결정하는 프로세스 주체의 신원이 인증을 거쳐 이미 확증되어 있어야 한다 흐음..

인가 인증 Ex) 군사보안 (Authorization) (Authentication) 진입 누구냐! 진입 통과! < 군사제한구역 > 진입 누구냐! 진입 통과! < 군사통제구역 > 인가 (Authorization) 인증 (Authentication) 진입 권한없음! 진입 통과!

주요 객체 보안검사자(Security Interceptor) 인증담당자(Authentication Manager) 권한 확인이 필요한 지점에서 요청에 대한 인증 및 인가를 검사한다 인증담당자(Authentication Manager) 사용자 정보(UserDetails)의 목록에서 주체(Principal)의 신원증명(Credentials)이 일치하는지 검사한다 인가(권한제어)담당자(Authorization Manager) 주체가 해당 요청에 대하여 부여된 권한(Granted Authority)을 가지고 있는지 검사한다

인증 인가 Ex) 군사보안 보안검사자 보안검사자 인증담당자 인가담당자 진입 누구냐! 진입 통과! < 군사제한구역 > 권한없음! < 군사통제구역 > 인증 인가 보안검사자 보안검사자 진입 인증요청 인가요청 통과! < 보안본부 > 인증담당자 인가담당자

응용. 웹 애플리케이션 보안 실무에서 마주치는 상황들..

응용 #1 직접 만든 로그인 폼 “로그인 폼이 왜 이렇게 못생겼어?? 영어로 나오고,,” applicationContext.xml 수정 login.jsp 작성

응용 #2 로그아웃 “들어오는 것은 네 마음이지만, 나가는 것은 네 맘대로 할 수 없다?!!” index.jsp 수정

응용 #3 사용자 로그인 확인 “지금 로그인이 되어 있는건가? 로그아웃 버튼은 왜 계속 보이는 거야?” index.jsp 수정

응용 #4 친절한 안내 “HTTP Status 403 - Access is denied ?!!! 헉, 오류다!!” applicationContext-security.xml 수정 noAuthorized.jsp 수정

응용 #5 로그인 실패 메시지 “아이디나 비밀번호를 잘못 입력했다면?” applicationContext-security.xml 수정 login.jsp 수정

응용 #6 로그인 성공 페이지 “로그인 성공시, 메인 페이지로 보내고 싶다..” applicationContext-security.xml 수정

응용 #7 특정 URL 통과시키기 “회원전용 사이트, 모든 URL에 보안적용, 하지만 로그인 페이지는 막으면 안됨” applicationContext-security.xml 수정

응용 #8-1 동시에 1명만 접속 (세션만료) “하나의 사용자ID는 동시에 한곳에서만 로그인 가능” applicationContext-security.xml 수정

응용 #8-2 동시에 1명만 접속 (로그인에러) “로그인된 사용자 ID에 대한 동시 로그인 차단” applicationContext-security.xml 수정

응용 #9 사용자 정보 DB에서 가져오기 “실무에서는 사용자 정보를 대부분 DB로 관리” DB관련 라이브러리 추가 사용자 테이블 구성 applicationContext-security.xml 수정

스프링 시큐리티 아키텍처 request Servlet/JSP Login.jsp FilterChain Proxy web.xml FilterChain Proxy Delegating FilterProxy SecurityContextHolder SecurityContext Authentication Channel ProcessingFilter Concurrent SessionFilter SecurityContext PersistenceFilter HolderAware RequestFilter RememberMe Authentication Filter UsernamePassword AuthenticationFilter Anonymous Exception TranslationFilter FilterSecurity Interceptor Authentication Manager UserDetails Service Provider Granted Authority AccessDecision Manager Login.jsp

심화과정. 시큐리티 제대로 사용하기 사실, 봄 보안은 그렇게 단순하지 않아요…

심화 #1 메서드 권한제어 “스프링 AOP를 사용한 메서드 권한제어” 스프링 MVC를 사용하기 위한 준비 및 AOP(Aspect-Oriented Programming) 관련 라이브러리 추가 applicationContext-security.xml 수정 MyService 작성

심화 #2 MyUserDetailsService applicationContext-security.xml 수정 MyUserDetails 작성 MyUserDetailsService 작성 MyDao 작성

심화 #3 XML-Based Configuration “HTTP 네임스페이스에 숨겨진 구성설정” applicationContext-security.xml

References Spring Security Reference Guide Spring Security API Javadoc http://static.springsource.org/spring- security/site/docs/3.0.x/reference/springsecurity.html Spring Security API Javadoc http://static.springsource.org/spring- security/site/docs/3.0.x/apidocs/index.html Spring Security Samples spring-security-samples-contacts.war spring-security-samples-tutorial.war Reference 번역 – SpringSprout Wiki http://wiki.springsprout.org/display/springsecurity/Home

- 감사합니다 -