본문 바로가기

Collaboration

[연재] Single Sign On (SSO)의 이해 - 1. SSO의 개요

    글 싣는 순서
 1. SSO의 개요
 2. SAML 2.0 Deepdive (상)
 3. SAML 2.0 Deepdive (하) 



시작하며
몇 년전부터 SSO를 이용한 인증 프로세스를 도입하는 기업이 늘어나고 있습니다. SSO는 사용자들이 직접 접속하는 애플리케이션을 다루는 엔지니어들에게는 익숙하지만, 네트워크나 협업 솔루션 엔지니어에게는 생소한 단어입니다. 협업 솔루션 구축 시 SSO와 연동을 요구하는 기업이 점차 늘어나고 있으므로 엔지니어들이 SSO 연동 정도는 손쉽게 할 수 있어야 하는 시대가 되었습니다.  

이번 연재는 SSO에 대한 전반적인 기술적인 이해를 시작으로 시스코 협업 솔루션에서 어떻게 구현하였지까지 다룰 수 있도록 하겠습니다.  


SSO의 개요 
사람들이 자주 혼동하는 인증과 권한에 대해 살펴보기 위해 아래 그림을 참조 하겠습니다. 해외여행을 가면  호텔에서 체크인(Check-in)을 합니다. 리센셥의 안내원은 투숙객에게 여권(패스포트)를 요구합니다. 안내원은 여권의 사진과 당신의 얼굴을 비교하여 동일인임을 확인하고 호텔방키를 줍니다. 이제 당신은 호텔방키를 이용하여 자신의 호텔방에도 들어가고, 호텔 수영장이나 헬쓰장도 이용합니다.  즉, 체크인 이후부터는 호텔 직원들이 호텔방키를 확인하지 여권을 확인하지 않습니다.   



기술적으로 정리해 보면, 여권을 이용하여 인증을 진행하고, 호텔방키를 이용하여 권한이 부여된 것입니다.여권을 사용자명과 패스워드 조합으로 보고 호텔방키를 권한 토큰 (Authorization Token)이라 한다면, 우리는 매우 편리하게 여러 자원을 이용할 수 있습니다.  

호텔에서 단 한번의 체크인으로 호텔 내의 모든 서비스를 이용한다는 개념을 생각해 보면 사용자 편의성과 보안 측면에서 효율성을 생각할 수 있습니다. SSO를  이해하기 어려운 순간에는 호텔의 체크인 개념을 떠올리시길 바랍니다. 


SSO의 정의 
SSO는 Single Sign On의 약어로 사용자가 단 한번의 인증 절차만으로 다수의 애플리케이션에 접속할 수 있도록 해주는 인증 프로세스입니다. 정해진 시간 동안 여러 애플리케이션을 이동하더라도 사용자는 추가적인 인증을 요구 받지 않아 사용자 편의성을 증대시키고, 애플리케이션마다 인증절차를 거치지 않으므로 다수의 패스워드를 기억필요가 없으므로 보안을 강화합니다. 

SSO를 기술적으로 자세히 이해하기 위해 프레임워크를 살펴보겠습니다. 

SSO를 구현하기 위해서는 세 가지 컴포넌트가 유기적으로 동작해야 합니다.

  • RP (Relying Party) : 서비스
    사용자가 접근하려는 서비스 또는 애플리케이션으로 SP(service provider) 라고도 한다. 

  • IdP (Identity Provider) : 인증 대행
    사용자 인증을 대행한 후 이름, 역할, 주소 등의 속성과 같은 정보 (Token)를 할당한다. 


사용자는 RP에 접근할 때마다 사용자 인증을 수행하는 것이 아니라 IdP와 사용자 인증을 수행한 후 받은 토큰을 이용하여 RP에 접속합니다. 


SP initiated  SSO와 IdP initiated  SSO
SSO 를 구현하는 기본적인 방식은 두 가지입니다. 비슷하지만, 인증 요청의 시작을 어디서 하느냐의 차이입니다. 


  • IdP-Initiated SSO (Unsolicited WebSSO)
    인증 요청이 IdP에서 시작되는 페더레이션 프로세스입니다. 사용자는 IdP로 직접 로그인을 시도 한 후에 SP에 접속하을 시도하면 SAML Response을 IdP로 부터 받아서 SP의 ACS URL에 포스팅하여 접속합니다.    


  • SP-intiated SSO
    인증 요청이 SP에서 시작되는 페더레이션 프로세스입니다. 사용자는 SP에 접속하면 자동으로 인증과정이 IdP 로 리다이렉트됩니다. 사용자는 IdP가 보내는 인증 양식에 따라 로그온을 한 후 SAML Response를 
    SP의 ACS URL에 포스팅하여 접속합니다.   



SSO를 구현을 위한 프로토콜
SSO 구현할 때 일반적으로 사용하는 프로토콜은 두 가지 입니다. 

  • SAML (Security Assertion Markup Language)
    보안 도메인 간에 인증과 권한 데이타를 교환하기 위해 만들어진 프로토콜입니다. SAML 2.0은 iDP와 SP 사이에 사용자에 대한 권한 정보가 들어 있는 보안 토큰을 이용하여 보안정보를 교환하는 XML 기반의 표준 프로토콜입니다. 

  • OATH 
    권한 부여를 위한 표준 프로토콜입니다. 일반적으로 패스워드를 드러내지 않고 마이크로소프트, 구글, 페이스북 또는 트위터 계정을 이용하여 다른 웹사이트에 로그온 하려고 할때 주로 사용합니다. 

기업에서 사용하는 애플리케이션에 대한 SSO를 구현하기 위해서는 SAML을 주로 사용합니다. 시스코의 협업 애플리케이션은 SAML 2.0을 지원합니다. 


마치며
지금까지 SSO의 개요와 주요 컴포넌트에 대해 살펴보았습니다. 다음 글에서는 SAML을 기준으로 어떻게 동작하는 지를 자세히 살펴보겠습니다. 
 



라인하 유씨누스 (CCIEV #18487)  _________________________________________________________
ucwana@gmail.com (라인하트의 구글 이메일) 
http://twitter.com/nexpertnet (넥스퍼트 블로그의 트위터, 최신 업데이트 정보 및 공지 사항) 
http://groups.google.com/group/cciev (시스코 UC를 공부하는 사람들이 모인 구글 구룹스) 
http://groups.google.com/group/ucforum (UC를 공부하는 사람들이 모인 구글 구룹스) 
세상을 이롭게 하는 기술을 지향합니다. ________________________________________________________