2010.12.4 고종봉 스프링 시큐리티와 OAuth.

Slides:



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

앱솔루트 MOOC 간호학과 압축강의 시청 사용절차 Manual 부산경상대학교 앱버튼 Ver 0.1.
임직원 APP 설치 가이드 경영전략처 정보기획 TF 팀. 임직원 App- 운영체제 구분  안드로이드 갤럭시, 갤럭시노트, 갤럭시 S4 [ 삼성전자 ] 옵티머스 [LG 전자 ] 베가 [ 팬텍 모토로이 [ 모토롤라 ]  ios 아이폰 [ 애플.
Korea Virtual Payment 모바일 안전결제 (ISP) 서비스 모델 - iPhone 한국버추얼페이먼트㈜ 기술연구소
LOGO Open API 를 이용한 SNS 위젯 개발 프로젝트 최종 발표 4 조 채상혁 윤호선 이재규.
1 넷스팟 MAC ID 설정 방법 ( 서울캠퍼스 기준 ) 각종 스마트폰의 WiFi 를 이용시 각종 스마트폰의 WiFi 를 이용시 MAC ID 설정을 하는 방법 입니다. 아이폰의 경우는 별도의 설정없이 바로 사용이 가능하오니, 사용이 어려울 경우, 고객센터로 문의하시면 됩니다.
스마트 KTC 사용자 매뉴얼 스마트폰용 모바일학생증 앱 설치 및 기본기능. 강원관광대 스마트 KTC 앱 설치 강원관광대학교 모바일학생증 앱 ( 이하 ‘ 스마트 KTC’ 로 명명 ) 은 안드로이드폰은 Google Play Store, 아이폰 은 App Store 에서 무료로.
HTTPS Packet Capture Tutorial
목차 Contents 무선인터넷용 비밀번호 설정방법 Windows 7 Windows 8 Windows XP MAC OS.
고종봉 스프링 시큐리티를 이용한 웹 보안 고종봉
OpenAPI의 응용 인공지능 연구실.
1. 신뢰할 수 있는 싸이트 등록 인터넷 익스플로러 실행 후 실행
Web Service Computing and Practice_
업체등록신청절차 목차 메인화면 메세지별 유형 2-1. 이미 가입된 공급업체
연구장비 공동활용 지원사업 연구장비예약 매뉴얼(참여기업)
메뉴얼 - 협력업체용 -.
Chapter 7. RAS(전화접속,VPN) & IAS
AP 모드 활용하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
8장. 원격지 시스템 관리하기.
FTP 프로그램 채계화 박재은 박수민.
NJM Messenger 박상원 박연호.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
KHS JDBC Programming 4 KHS
Wireless Java Programming
UpToDate® Anywhere(UTDA)
인터넷 따라 하기 ◆ 인터넷 시작 하기 ◆ 인터넷 끝내기 ◆ 홈페이지 방문 및 정보검색 ◆ 전자우편( ) 가입
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Adobe 제품 다운로드 및 설치 방법 안내 Adobe Creative Cloud Adobe License 권한을 받으신 분
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
인문학 동영상 강의 사용자 매뉴얼 (PC & Mobile).
Nessus 4 설치 정보보호응용 조용준.
OS 역사 손병규.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
웹디자인
MAIL CLIENT 김창우 윤성훈 이경재.
KERBEROS.
화이트 보드와 채팅 기능을 제공하는 웹 기반 공동작업 지원 시스템
-네트워크 관리 개요 및 SNMP 프로토콜 동작과정
데이터 베이스 DB2 관계형 데이터 모델 권준영.
※ 편리한 사이버 연수원 사용을 위한 인터넷 최적화 안내 ※
법령안편집기 연결버튼 표시가 안 될 경우 정부입법지원센터( 입안 및 심사안을 진행시
인천대학교 웹과 인터넷 수업 개요 및 내용 소개.
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
SSL, Secure Socket Layer
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
연구실안전관리시스템 온라인 안전교육 수강방법.
Introduction to JSP & Servlet
Oauth 인증 기술.
1. 신규 연세메일(Gmail)에 로그인 합니다. ( yonsei. ac. kr )
모바일(폰)메일 서비스 정흠수 최동훈.
공인인증로그인 매뉴얼.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
JSP Programming with a Workbook
업체등록신청절차 목차 메인화면 메세지별 유형 2-1. 이미 가입된 공급업체
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
1. 포털 시스템 사이트 접속 ◎ 포털시스템 ( ) 사이트에 들어갑니다.
9 브라우저 객체 모델.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
공인인증로그인 매뉴얼.
UpToDate® Anywhere(UTDA)
전자수입인지 회원가입 및 구매절차 세무팀.
접근제어 솔루션 계정등록 및 클라이언트 설치.
연구실안전관리시스템 온라인 안전교육 수강방법.
연구장비 공동활용 지원사업 바우처 매뉴얼(참여기업)
연구실안전관리시스템 온라인 안전교육 수강방법.
연구실안전관리시스템 온라인 안전교육 수강방법.
공인인증로그인 매뉴얼.
JAVA 프로그래밍 16장 JNLP.
AJAX? Cho Hyun Min.
Presentation transcript:

2010.12.4 고종봉 스프링 시큐리티와 OAuth

발표 개요 발표의 목적 발표의 목표 스프링 시큐리티 학습 내용 공유 최근 OAuth 관심 증대 / 학습 내용 공유 KSUG 세미나 스프링 시큐리티 발표내용 보충 발표의 목표 스프링 시큐리티 이해 스프링 시큐리티 구현&분석 OAuth 이해 스프링 시큐리티 OAuth 구현&분석

발표 순서 스프링 시큐리티 스프링 시큐리티 구현&분석 OAuth 소개&시나리오&데모 스프링 시큐리티 OAuth 구현&분석

스프링 시큐리티

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

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

스프링 시큐리티 스프링 시큐리티 J2EE-기반 엔터프라이즈 소프트웨어 애플리케이션을 위한 종합적인 보안 서비스를 제공 http://static.springsource.org/spring-security/site/index.html

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

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

스프링 시큐리티 아키텍처 request Servlet/JSP SecurityContext SecurityContext Impl HttpSessionSecurityContextRepository SecurityContext SecurityContext Repository SecurityContext PersistenceFilter LogoutFilter UsernamePasswordAuthenticationFilter DefaultLoginPage GeneratingFilter BasicAuthentication Filter RequestCache AwareFilter SecurityContextHolder AwareRequestFilter Anonymous AuthenticationFilter SessionManagement Filter Exception TranslationFilter FilterSecurity Interceptor request Servlet/JSP Delegating FilterProxy FilterChain Proxy web.xml UsernamePassword AuthenticationToken Authentication ProviderManager Manager Authentication Provider InMemoryDaoImpl UserDetailsService DaoAuthentication Provider Granted AuthorityImpl User UserDetails Granted Authority AffirmativeBased AccessDecision Manager

스프링 시큐리티 구현&분석

OAuth 소개

Case 고급 외제차를 타고 와서 발렛 서비스를 맡긴다. 발렛 직원에게 별도의 키를 전해주는데, 이 키로는 잠시 동안의 차량 운행만 가능하며, 트렁크나 차량용 휴대폰을 조작할 수는 없다. 이 키는 용도가 제한적이지만, 발렛에는 안성맞춤이다. http://en.wikipedia.org/wiki/OAuth Transport Layer

OAuth ? 웹이 발달함에 따라, 수 많은 사이트에서 분산 서비스와 클라우드 컴퓨팅을 활용하고 있다. 서드파티 애플리케이션으로, Flickr에서 사진을 가져와 출력하거나, Google 주소록에서 친구들을 찾기 위해 다양한 서비스 API를 활용할 수 있다. OAuth는, 이러한 API들을 사용하기 위해, 사용자 비밀번호를 공유하지 않고도 서드파티에게 사용자의 제한된 자원에 접근할 수 있도록 허가해주는 보안 프로토콜이다. http://en.wikipedia.org/wiki/OAuth Transport Layer

OAuth History 2006년 OpenID 구현을 위해 처음 개발되었으며, API 접근 허용 방식에 대한 오픈 표준이 필요함에 따라, 2007년 OAuth Core 1.0 초안이 완성. 2010년 4월 OAuth 1.0 프로토콜이 RFC 5849로 정식 발행(publish)되었으며, 트위터 애플리케이션이 OAuth 1.0을 사용하도록 지원함. OAuth 2.0은 클라이언트 개발자가 좀더 단순하게 권한을 얻을 수 있도록 하는데 초점을 맞추어 개발되고 있으며, 규격서 작성이 현재 진행 중임. http://en.wikipedia.org/wiki/OAuth Transport Layer

OAuth 시나리오

시나리오 제인(Jane)은 휴가 여행으로 스코틀랜드에 다녀왔다. 2주간의 여행 기간 동안 스코틀랜드의 풍경을 촬영했다. 집으로 돌아온 제인은 사진 중 일부를 친구들과 공유하기 위해 이미지 공유 사이트인 Faji에 로그인하여 개인 계정으로 사진 이미지를 업로드 하였다. http://oauth.net http://hueniverse.com/2007/10/beginners-guide-to-oauth-part-ii-protocol-workflow/ Transport Layer

시나리오 친구들과 온라인으로 사진을 공유한 제인은, 그 사진들을 그녀의 할머니에게도 보여주고 싶어졌다. 제인의 할머니는 인터넷을 사용할 줄 모르기 때문에, 제인은 그 사진들을 인화해서 우편으로 보내드려야겠다고 생각했다. 그래서 평소 즐겨 애용하던 사진 인화 사이트인 Beppa에 접속을 한다. Beppa는 여러 이미지 공유 사이트와 연동이 되므로, 제인은 beppa.com에 접속해서 인화 주문을 하고, Faji로부터 이미지를 가져오도록 선택한다. Transport Layer

시나리오 제인이 Faji로부터 이미지를 가져오도록 선택하자, Beppa는 Faji에 제인의 이미지를 가져가길 원한다는 요청을 한다. 그리고 인증을 위해 제인의 브라우저 화면을 Faji의 인증 페이지로 redirect 한다. Transport Layer

시나리오 제인이 사용자 인증 정보를 입력하고 확인을 누르자, Faji가 “Beppa가 제인의 개인 계정 데이터를 사용하고자 하는데 승낙할 것인지”를 물어보게 된다. 제인이 개인 계정의 데이터를 사용할 수 있도록 승낙하면, 다시 Beppa 사이트로 redirect 되어 “사진 전송이 진행 중”이라는 화면이 나타난다. Transport Layer

시나리오 Beppa는 제인이 Faji에 인증한 결과로, Faji로부터 제인의 개인 데이터에 접근 할 수 있는 권한을 받아 제인의 사진 이미지를 얻어온 후, 출력을 계속 진행한다. Transport Layer

용어 정의 서비스 제공자(Provider) – OAuth의 서버 역할을 하며, Request Token, Access Token을 발급하고, 사용자의 인증/인가를 수행한다. 서비스 소비자(Consumer) – OAuth의 클라이언트 역할을 하며, 사용자 인증을 중개하여 Request Token과 Access Token을 발급받아 사용한다. 사용자(User) – 서비스에 가입되어 서비스를 사용하는 주체이다. 브라우저를 통해 서비스 소비자 및 제공자 사이트에 접속하여 인증 정보를 입력하고, 원하는 서비스를 사용한다. 보호 자원(Protected Resources) – 해당 사용자의 개인 데이터로, 인가 받지 않은 외부 사용자가 접근할 수 없도록 보호해야 할 자원이다. 토큰(Token) – 사용자의 신원(credential)을 대신하여, 보호 자원에 접근 하는 데 사용된다. Request Token과 Access Token이 있다.

Process Flow 인화 요청 get REQUEST_TOKEN return REQUEST_TOKEN (consumer-key, -secret, callback url) return REQUEST_TOKEN redirect: authorize (request_token) authenticate(security) authorize (request_token) redirect: CALLBACK URL (request_token, verifier) CALLBACK URL (request_token, verifier) get ACCESS_TOKEN (request_token, verifier) return ACCESS_TOKEN, SECRET get PROTECTED_RESOURCES (access_token, secret) return PROTECTED_RESOURCES 결과 화면 Transport Layer

OAuth References Beginner’s Guide to OAuth IETF Specification OAuth Community Site http://oauth.net/ Beginner’s Guide to OAuth http://hueniverse.com/oauth/ IETF Specification RFC 5849: The OAuth 1.0 Protocol http://tools.ietf.org/html/rfc5849 RFC 5849: The OAuth 2.0 Protocol (draft) http://tools.ietf.org/html/draft-ietf-oauth-v2-10

데모 시연

Tonr & Sparklr Tonr – Service Consumer (=beppa) Sparklr – Service Provider (=faji) Tonr Sparklr Transport Layer

스프링 시큐리티 OAuth

Spring-Security-OAuth http://spring-security-oauth.codehaus.org/ http://static.springsource.org/spring-security/oauth/index.html

Consumer & Provider 구현 Provider Consumer Spring Security OAuth (Provider) Spring Security OAuth (Consumer) Provider Consumer Transport Layer

스프링 시큐리티 OAuth 구현&분석

OAuth 2.0 OAuth 1.0은 Flickr API나 Google의 AuthSub 등에 주로 사용되었으며, 인증 및 서명 절차의 복잡성, 토큰 발행에 대한 사용자 경험 불일치, 처리 성능 등으로 개선의 필요성이 요구되었다. Access token을 발급 받는 주체는 크게 웹 기반 애플리케이션, 데스크탑 애플리케이션, 모바일 또는 소형기기 등으로 구분할 수 있다. 최초의 OAuth는 이 기반들을 모두 수용하도록 설계되었으나, 표준 규격서로 작성되면서 웹 기반의 애플리케이션에서만 사용 가능한 것처럼 보여지게 되었다. OAuth 2.0은 OAuth 1.0 보다 절차를 간소화시킨 것이며, OAuth 1.0 프로토콜과 호환되지는 않지만, 동작방식에 있어서는 크게 다르지 않다. OAuth 2.0은 현재 IETF OAuth 워킹 그룹에 의해 개발이 진행중이며, 최종 단계의 초안이 안정화 버전으로 여겨지기는 하지만 여전히 많은 특징들이 수정되고 추가되고 있다. OAuth 2.0의 일부 기능들은 이미 페이스북이나 트위터에 적용되고 있으며, 최종 규격서는 올해 연말쯤 발표될 예정이다.

감사합니다!!!