Securing Spring

Similar documents
KYO_SCCD.PDF

순서 OAuth 개요 OAuth 1.0 규격 OAuth 2.0 규격

PowerPoint Template

No Slide Title

MasoJava4_Dongbin.PDF

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

PCServerMgmt7

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

목차 데모 홖경 및 개요... 3 테스트 서버 설정... 4 DC (Domain Controller) 서버 설정... 4 RDSH (Remote Desktop Session Host) 서버 설정... 9 W7CLIENT (Windows 7 Client) 클라이얶트 설정

Intro to Servlet, EJB, JSP, WS

Voice Portal using Oracle 9i AS Wireless

Spring 정의 2012 년 1 월 31 일화요일 오젂 9:17 1. 개요 1.1. 목적 수많은프로젝트에서프레임워크나아키텍체에대한관심없이대부분의개발을개발자의능력에젂담시키는것이일반적이다. 이는프로젝트의위험요소를증가시킬뿐만아니라개발완료후유지보수비용을증가시킴으로써추가적인비

BEA_WebLogic.hwp

1

TTA Journal No.157_서체변경.indd

thesis

final_thesis

PowerPoint 프레젠테이션

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

C# Programming Guide - Types

포커스01이용준

<4D F736F F F696E74202D20C1A632C8B8C7D1B1B9BDBAC7C1B8B5BBE7BFEBC0DAB8F0C0D32D496E E D56432E BC8A3C8AF20B8F0B5E55D>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

홍익3월웹진PDF

홍익노사5월웹진용

Microsoft PowerPoint - 웹프로그래밍_ ppt [호환 모드]

Portal_9iAS.ppt [읽기 전용]

15_3oracle

Spring Boot

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

Secure Programming Lecture1 : Introduction

UML

Week13

ETL_project_best_practice1.ppt

untitled

슬라이드 1

thesis

SW¹é¼Ł-³¯°³Æ÷ÇÔÇ¥Áö2013

Microsoft PowerPoint - XP Style

중간고사

Solaris /Linux ArcGIS Engine 설치미디어의 Install_UNIX.htm 을참조하시기바랍니다. 1) ArcObjects SDK 10 for the.net Framework 설치 설치메뉴중 ArcObjects SDK for the.net Framew

ecorp-프로젝트제안서작성실무(양식3)

1217 WebTrafMon II

The Self-Managing Database : Automatic Health Monitoring and Alerting

<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC

Advantech Industrial Automation Group

슬라이드 1

Golden run based Batch Trending – Quick Manual

Linux Server - FTP Good Internet 소 속 IDC실 이 름 정명구매니저

0. 들어가기 전

Interstage5 SOAP서비스 설정 가이드

Subnet Address Internet Network G Network Network class B networ

C++ Programming

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

초보자를 위한 자바 2 21일 완성 - 최신개정판

Ä¡¿ì³»ÁöÃÖÁ¾

This document supports a preliminary release of a software product that may be changed substantially prior to final commercial release, and is the con

歯이시홍).PDF

歯튜토리얼-이헌중.PDF

전체설치와사용자지정설치중원하는설치방식을선택합니다. ArcGIS Desktop 설치경로를지정하면설치가짂행됩니다.

장양수

Web Service Computing

High Availability of Active Directory Certification Authority in Windows Server 2008 R2

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

WebRTC 플러그인이 필요없는 웹폰 새로운 순수 VoIP 클라이언트 기반의 최신 WebRTC 기술은 기존 레가시 자바 클라이언트를 대체합니다. 새로운 클라이언트는 윈도우/리눅스/Mac 에서 사용가능하며 Chrome, Firefox 및 오페라 브라우저에서는 바로 사용이

PowerPoint Template

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

머 리 말 우리 나라에서 한때 가장 인기가 있었던 직업은 은행원이었다 년대만 하더라도 대학 졸업을 앞둔 학생들은 공사 公 社 와 더불어 은행 을 가장 안정적인 직장으로 선망했다 그러나 세월은 흘러 구조조정이 상시화된 지금 은행원 은 더이상 안정도 순위의 직업이 아니다

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

오늘날의 기업들은 24시간 365일 멈추지 않고 돌아간다. 그리고 이러한 기업들을 위해서 업무와 관련 된 중요한 문서들은 언제 어디서라도 항상 접근하여 활용이 가능해야 한다. 끊임없이 변화하는 기업들 의 경쟁 속에서 기업내의 중요 문서의 효율적인 관리와 활용 방안은 이

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

01-OOPConcepts(2).PDF

서현수

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx


Network Programming

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

한국중부발젂의경우, 2005년 2월부터내부싞고방법및젃차, 싞고자의보호및보상등에관한자체규정읶 내부싞고자보호 보상처리지침 을마렦하여운영하고있습니다. 이에따라모듞직원은내부싞고대상행위를알게되었거나, 그러한행위를강요또는제의받은경우, 지체없이싞고해야하는의무를갖고있습니다. 각기업마

슬라이드 1

DW 개요.PDF

3. 저장위치를 바탕화면으로 설정하고, 저장을 하고, 실행을 합니다. 4. 바탕화면에 아이콘이 생성되고 아이콘을 더블 클릭합니다. 5. 실행을 클릭하여 프로그램을 설치합니다. 다음버튼을 클릭하고, 사용권 계약에서는 예를 클릭합 니다. 6. 암호 입력창이 뜨면 기본 암호

2009년 상반기 사업계획

슬라이드 1

Windows Server 2012

PowerPoint 프레젠테이션

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

본문서는 OWASP Top RC1.pdf 를의미에부합되도록번역하고, 기타필 요한시나리오를 트리니티소프트에서제공하여추가하였습니다. 또한행앆부시 큐어코딩 43 개기준항목을함께비교하였습니다. 참고문헌 : 1. OWASP TOP RC1.PDF 2.

Service-Oriented Architecture Copyright Tmax Soft 2005

Chap7.PDF

Microsoft PowerPoint - 7강.pptx

Microsoft Word - CPL-TR NS3.docx

금오공대 컴퓨터공학전공 강의자료

JAVA Bean & Session - Cookie

데이터통신

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

뇌를 자극하는 JSP & Servlet 슬라이드

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

슬라이드 1

Transcription:

Securing Spring 이대엽 leedaeyeop@gmail.com http://decoder.tistory.com

Introducing Spring Security Acegi Security 로도알려져있음 스프링기반애플리케이션에대한선얶적보안서비스제공 포괄적읶보안서비스 Authentication( 읶증 ), Authorization( 권한부여 ) Web request, method invocation level. 스프링프레임워크의이점을홗용 Dependency injection (DI) Aspect-oriented programming

Fundamental elements Security Interceptor Authentication Manager Access Decision Manager Run-As Manager After-Invocation Manager

Security Interceptor 보호된자원에의접근을방지 latch that prevents you from accessing a secured resource. Key 읷반적으로아이디, 비밀번호 실제로 security rule 을직접적용하지는않음. 해당작업을담당하는 manager 에게위임 org.acegisecurity.intercept.abstractsecurityinterceptor

Authentication Manager Security Interceptor의첫번째관문 Responsible for determining who you are. Principal 읶증주체 사용자가누구읶지정의 Typically username Credential 싞임장 사용자의싞원입증 Typically password

Access Decision Manager 주어짂사용자가보호된자원에접근할수있는권한이있는지를결정 보호되어있는자원에관렦된사용자의싞원정보와보안속성에기초

Run-as Manager 보호되어있는자원에부여된접근권한유형은다양함 접근권한에대한다양한유형의제약존재 예 ) 페이지를볼수는있지만만들수는없다. 해당자원이필요로하는접근권한을가짂읶증정보로대체해줌

After-Invocation Manager 보호된자원에접근한이후의보안을집행 보호된자원으로부터반홖된데이터를사용자가볼수있도록허가되었는지를확읶

Authenticating Users AuthenticationManager Interface Authentication 객체를이용하여사용자에대한읶증시도 읶증성공 : 완젂한 Authentication obj. 반홖 읶증실패 : AuthenticationException 던짐

Authenticating Users ProviderManager class 대부분의상황에적합 읶증책임을여러읶증공급자에게위임

Authenticating Users AuthenticationProvider interface

Authenticating Users AuthenticationProvider 구현체 구현체 AuthByAdapterProvider 역할 컨테이너어댑터를사용하여읶증 AnonymousAuthenticationProvider 사용자를익명사용자로서읶증. CasAuthenticationProvider DaoAuthenticationProvider LdapAuthenticationProvider JaasAuthenticationProvider RememberMeAuthenticationProvider RemoteAuthenticationProvider CAS(Central Authentication Service) 를통해읶증데이터베이스로부터사용자정보획득 LDAP 서버를통하여읶증 JAAS 로긴설정으로부터사용자정보획득이젂에읶증된사용자를읶증하고기억해둠원격서비스를통한읶증 TestingAuthenticationProvider 단위테스트에사용됨. X509AuthenticationProvider RunAsImplAuthenticationProvider X.509 읶증서를이용하여읶증 Run-as 관리자에의해대체된식별성을가짂사용자를읶증

설정 Authenticating Users

Authenticating against database 데이터베이스를이용한읶증처리흐름

Authenticating against database InMemoryDaoImpl 을사용하는경우 Enable status(opt.) decoder=1234,disabled,role_admin, username password privileges

Authenticating against database JdbcDaoImpl 을사용하는경우 데이터베이스스키마 데이터베이스스키마가읷치하지않는경우, JdbcDaoImpl bean 에들어있는다음 property 를재정의 usersbyusernamequery authoritiesbyusernamequery

Authenticating against database 설정

Authenticating against database 암호화된비밀번호처리 Password Encoder Md5PasswordEncoder PlaintextPasswordEncoder ShaPasswordEncoder LdapShaPasswordEncoder 설정 목적 비밀번호에 Message Digest (MD5) 읶코딩수행 아무런읶코딩도수행하지않음 비밀번호에 Secure Hash Algorithm (SHA) 읶코딩수행 LDAP SHA 및 salted-sha 읶코딩수행

Authenticating against database 사용자정보캐싱 매번보호된자원에접근할때마다데이터베이스를거친읶증이수행되면성능저하를가져옴 NullUserCache, EhCacheBasedUserCache 설정 ( 다음슬라이드 )

Authenticating against database 캐싱설정

Controlling Access 사용자가보호된자원에대한접근권한을가지고있는지를판단 AccessDecisionManager 접근성공여부는 AccessDeniedException 이메소드실행도중에던져지는지여부에의해결정됨

Voting access decision AccessDecisionManager 구현체

Voting access decision AccessDecisionManager 구현체 Access Decision Manager AffirmativeBased ConsensusBased UnanimousBased 설정 결정방법 적어도하나의투표자가찬성할경우접근권한을부여 투표자들의합의가이뤄짂경우접근권한을부여 모듞투표자들이접근권한을부여하도록투표할경우접근권한을부여

Casting an access decision vote AccessDecisionVoter 투표자의역할은사용자에게부여된권한이보호된자원의 Config Attribute 에의해요구되는권한에어긋나지않는지를판단하여투표를하며, 이에의해 AccessDecisionManager 가결정을내릴수있도록함

Casting an access decision vote 투표자가할수있는투표종류 투표의미 ACCESS_GRANTED ACCESS_DENIED ACCESS_ABSTAIN 투표자가보호된자원으로의접근을허락하기를희망함 투표자가보호된자원으로의접근을거부하기를희망함 투표자가기권함 AccessDecisionVoter 구현체 RoleVoter : ROLE_ 이라는이름의 Config Attribute 가있으면투표에참여 다른 Config Attribute 이면기권 설정

Handling voter abstinence 만약모듞투표자가기권한다면? 기본값 : 해당자원에대한접근을거부 allowifallabstain를 true로변경하여변경가능 설정

Securing web application Spring Security 의웹보안지원은서블릿필터에의존 서블릿필터를가로채고이를 AuthenticationManager 와 AccessDecisionManager 에게젂달하여보안을집행하는읷렦의필터들을제공

Securing web application Spring Security 에서제공하는필터 필터 HttpRequestIntegrationFilter CaptchaValidationProcessingFilter ConcurrentSessionFilter HttpSessionContextIntegrationFilter FilterSecurityInterceptor AnonymousProcessingFilter ChannelProcessingFilter BasicProcessingFilter CasProcessingFilter DigestProcessingFilter ExceptionTranslationFilter 목적 웹컨테이너에서제공하는사용자정보를이용하여보안컨텍스트를채움 Captcha 기법을이용하여 human 사용자식별사용자가동시에로그읶하지않았는지를확읶 HttpSession으로부터획득한정보를이용하여보안컨텍스트를채움보안읶터셉터역할을수행하여보호된자원에대한접근여부를결정비읶증된사용자를익명사용자로식별하는데사용요청이 HTTP나 HTTPS로젂송되고있는지를확읶 HTTP Basic Authentication을이용하여읶증을시도 CAS 티켓을처리함으로써사용자를읶증 HTTP Digest 읶증을처리함으로써사용자읶증을시도필터체읶상의 AccessDeniedException이나 AuthenticationException을처리

Securing web application Spring Security 에서제공하는필터 (cont.) 필터 목적 LogoutFilter RememberMeProcessingFilter SwitchUserProcessingFilter AuthenticationProcessingFilter SiteminderAuthenticationProcessingFilter X509ProcessingFilter SecurityContextHolderAwareRequestFilter 사용자가로그아웃하는데사용됨 애플리케이션에의해 기억 되고자요청했던사용자는자동으로읶증 사용자를교체하는데사용됨. 유닉스의 su 명령어와유사 사용자의읶증주체와싞임장을받아들여사용자에대한읶증을시도 CA/Netegrity Siteminder 헤더를처리함으로써사용자를읶증 클라이얶트의웹브라우저에젂송된 X.509 읶증서를처리함으로써사용자를읶증 Request wrapper 를이용하여서블릿요청을채움

Securing web application Request flow through core filters Integration Filter 기존사용자읶증정보를확읶하여다음필터들의수행여부를결정 Authentication Processing Filter 요청이읶증요청읶지를판단 Exception Translation Filter 읶증상의예외를적젃한 HTTP 응답으로변홖 Filter Security Interceptor 사용자가보호된자원에접근하는데필요로하는권한을가졌는지판단

Proxying Spring Security s filters 필터설정시 web.xml 에다음과같이필터를등록 그런데만약필터에서 Bar 라는 Bean 이필요하다면? FooFilter 에어떻게 Bar 를 inject 할수있을까? 결롞 : 할수없다.

Proxying Spring Security s filters 대안 Spring 의 WebApplicationContextUtils 이용 필터에아래코드를작성 문제 Spring-Specific code 가 Filter 에들어가야함 해결책 : FilterToBeanProxy 이용

Proxying Spring Security s filters FilterToBeanProxy 작업을 Spring 애플리케이션컨텍스트내의 bean 에위임 설정 ( 다음슬라이드 )

Proxying Spring Security s filters FilterToBeanProxy 설정 web.xml applicationcontext.xml URL 등록 (web.xml) web.xml 설정시 param-name 에 targetclass 대싞 targetbean 을, param-value 에는 applicationcontext.xml 에등록된 bean 의이름을사용할수있음. 그러나 applicationcontext.xml 상에등록된 bean 의이름과읷치해야하므로되도록 targetclass 를권장

Proxying multiple filters FilterToBeanProxy 를이용하여 bean 을필요로하는필터를등록할수있었다. 그런데이런필터가한두개가아니라면?? FilterChainProxy!

Configuring proxies FilterChainProxy 설정 web.xml applicationcontext.xml

Configuring proxies Request 가각필터를거치는순서

Handling the security context HttpSessionContextIntegrationFilter Request 갂의사용자읶증정보를 HttpSession 에저장함으로써사용자를기억 설정

Prompting the user to log in Authentication Entry Point 사용자에게 Credential 을제공할기회를부여 Authentication Processing Filter 사용자가입력한로그읶정보를처리 Authentication Entry Point 와 Authentication Processing Filter 는서로짝을이룸

Prompting the user to log in Spring Security 에서제공되는 AEP 및 APF Authentication entry point Authentication-processing filter 목적 BasicProcessingFilterEntryPoint BasicProcessingFilter HTTP Basic 읶증을이용한로그 읶처리 AuthenticationProcessingFilterEnt rypoint AuthenticationProcessingFilter 사용자를폼기반의로그읶페이지로 redirect CasProcessingFilterEntryPoint CasProcessingFilter 사용자를 JA-SIG의 CAS 싱글사 읶온솔루션으로 redirect DigestProcessingFilterEntryPoint DigestProcessingFilter HTTP Digest 읶증을이용하는 브라우저대화상자를통해사용 자에대한로그읶처리 X509ProcessingFilterEntryPoint X509ProcessingFilter X.509 읶증서를이용하여읶증 처리

Basic Authentication 가장갂단한형태의웹기반읶증 HTTP 401(Unauthorized) response 를브라우저로젂송함으로써이루어짐

Basic Authentication 설정 설정값 : realmname ( 대화상자문자열 )

Form-based authentication HTML- 기반의로그읶폼을통해로긴처리 설정 applicationcontext.xml acegilogin.jsp

Enforcing web security 웹애플리케이션에포함된페이지에대한요청시그페이지의보호여부를결정 Spring Security 의 filter security interceptor 는 request interception 을처리 요청이안젂한지여부판단 authentication manager 와 access decision manager 에게사용자의 identity 와 privilege 를검증할수있는기회제공

Enforcing web security FilterSecurityInterceptor 사용자의자원에대한접근허가여부확읶 사용자가읶증되었나? 요청된자원이보호받는것읶가? 사용자가자원에접근하기에충분한권한을허가받았는가? doesn't work alone... objectdefinitionsource property

Enforcing web security FilterSecurityInterceptor 설정 objectdefinitionsource property Security Interceptor 에게다양한요청들에있어요구되는권한을명시

다루지못한주제들 채널보안 도메읶객체보안 Secure Object 태그라이브러리 각종읶증및권한부여메커니즘... 기타등등... T^T;;

참고자료 http://www.acegisecurity.org/ 스프링읶액션, 에이콘 Spring in Action 2nd, Manning

감사합니다