곰돌이 놀이터

[기본] SSO(Single Sign On) 연동 본문

기본 개발 지식

[기본] SSO(Single Sign On) 연동

달나라 곰돌이 2019. 3. 26. 16:06
현재 다니고 있는 회사에서는 
회사 내부에서 사용하고 있는 다양한 시스템을 운영하고 있기때문에
모든 사원의 계정을 하나로 통합하여 관리 해야할 필요성이 생겼고,
이에 따라 각각의 아이디와 패스워드는 물론 각각의 개인정보를 UserDB 가 증가되지 않고 하나로 통합하여 한번의 로그인으로 모든 시스템을 자동적으로 접속하여 이용할 수 있도록 SSO 인증 방식을 사용 하였다.

나는 위에서 언급한 SSO(Single Sign On) 에 대해 조금 자세히 알아보고자 한다.

 SSO 의 정의 


위키백과에서는 SSO( Single Sign On, 통합 인증 ) 를 아래와 같이 정의한다.


 통합 인증( Single Sign-On; SSO)은 한 번의 인증 과정으로 


 여러 컴퓨터 상의 자원을 이용 가능하게 하는 인증 기능이다. 


 싱글 사인온, 단일 계정 로그인, 단일 인증이라고 한다.


말 그대로 그룹웨어 등의 응용 프로그램을 사용하기 위해 어느 컴퓨터에 로그인한 후 또 다른 서버상의 응용 프로그램을 사용할 때, 사용자는 여러 개의 아이디와 비밀번호를 관리해야 한다. 하지만 통합인증을 도입한 환경에서는 사용자는 하나의 아이디와 비밀번호로 모든 기능을 사용할 수 있게된다.


 SSO 의 등장배경 


■ 기술적 측면 :

1. 기업 내 다양한 정보시스템의 구축에 따른 복잡성 증가

2. PKI, 생체인식 등 다양한 인증 기술의 활성화


■ 관리적 측면 : 

1. 중앙 관리를 통한 업무 단순화 및 표준화 실현

2. 중앙 집중적인 사용자 관리를 통한 보안 기능 강화


 SSO 의 주요 기능 및 특징 


■ 주요 기능


항목주요 기능
사용자 관리

• 멀티 도메인간의 다양한 애플리케이션간의 통합인증(SSO)을 제공
• 조직별 사용자별 사용자 정보에 대한 통합관리 및 사용자별 시스템 접근 권한 관리 기능 제공
• 자원에 대한 접근 권한 제어 모델을 구현할 수 있는 기초 환경 제공

암호 관리

• 암호 분실 시 사용자에 의한 일괄 변경 기능 제공

데이터 암호화 관리

• 사용자 인증 정보 노출을 방지하기 위하여 데이터를 암호화한 송수신 기능 제공

정책기반 관리

• 인증방법, ID규칙, 패스워드 제약사항, 접근 위치/시간 제약 등의 정책을 정의하여 조직, 사용자, 자원에 일괄 적용할 수 있는 관리 기능 제공


■ 주요 특징


항목주요 기능
사용자 편의성 증대

• 한번의 사용자 인증을 통한 모든 서비스 자원 사용으로 로그인 편의성 및 접근성 향상
• 강화된 인증 정책 및 인증 메커니즘(예, 인증서 이용)으로 접근 보안성 강화

애플리케이션 운영 관리의 효율성 증대

• 사용자 인증 및 권한 보안 정책에 대한 일관성 확보로 시스템 개발 및 솔루션 도입 시 신속한 적용 및 비용 절감 효과 발생

개발 효율성 증대

• 애플리케이션 개발 시 통합 인증/자원 통제 모듈을 사용할 수 있으므로 개발자는 Business Logic개발에만 전념함으로써 애플리케이션 품질 향상 및 중복된 모듈 개발 투자방지로 인한 개발 비용/시간 감소


 SSO 의 구현 모델 및 기법 


■ 구현 모델


인증 대행 모델 



인증정보 전달 모델



항목주요 기능
SSO Delegation(인증 대행) Model

• SSO 대상 애플리케이션에서 사용되는 사용자 인증방법을 별도의 SSO Agent가 대행해주는 방식 
• SSO Delegation은 대상 애플리케이션의 인증 방식을 변경하기 어려울 때 많이 사용되며 대상 애플리케이션의 인증 방식을 전혀 변경하지 않고, 사용자의 대상 애플리케이션 인증 정보를 에이전트가 관리해 사용자 대신 로그온 해주는 방식임 
• Target Server 1을 로그온 할 때 User1이 alice/alice라는 ID/ PWD가 필요하다면, 에이전트가 이 정보를 가지고 있고, User1이 Target Service 1에 접근할 때 에이전트가 대신 alice/alice ID/PWD 정보를 전달해서 로그온 시켜줌

SSO Propagation(인증정보 전달) Model

• SSO시스템과 신뢰관계를 토대로 사용자를 인증한 사실을 전달받아 SSO를 구현하는 방식
• SSO Propagation은 통합 인증을 수행하는 곳에서 인증을 받아 대상 애플리케이션으로 전달할 토큰(Token)을 발급 받아 대상 애플리케이션에 사용자가 접근할 때 토큰을 자동으로 전달해 대상 애플리케이션이 사용자를 확인할 수 있도록 하는 방식임 
• 웹 환경에서는 쿠키(Cookie)라는 기술을 이용해 토큰을 자동으로 대상 애플리케이션에 전달할 수 있다. 이러한 웹 환경의 이점으로 웹 환경에서의 SSO는 대부분 이 모델을 채택하고 있음

Delegation & Propagation 방식

• 웹 환경이라고 하더라도 Propagation 방식이 모두 적용될 수는 없으며, 특히 웹 애플리케이션의 변경이 전혀 불가능하고 사용자 통합이 어려운 경우 Delegation 방식을 사용하게 됨
• 대상 애플리케이션들이 많이 있고 애플리케이션의 특성들이 다양한 경우 각 애플리케이션에 Delegation 방식과 Propagation 방식을 혼용해서 전체 시스템의 SSO을 구성함

Web 기반 One Cookie Domain SSO

• SSO 대상 서비스와 응용 애플리케이션들이 하나의 Cookie Domain안에 존재할 때 사용되는 일반적인 기업 내부의 컴퓨팅 환경에서 사용 
• 통합 인증을 받은 사용자는 토큰을 발급받게 되고, 이 토큰은 Cookie Domain에 Cookie로 설정되어 Cookie Domain 내의 다른 서비스로 접근할 때 자동으로 토큰을 서비스에 제공하게 되며 서비스에서 동작되는 SSO 에이전트는 토큰으로부터 사용자 신원을 확인하고 요청된 자원에 대한 접근을 허가 해 줌

Web 기반 Multi Cookie Domain SSO

• SSO 대상 서비스와 응용 애플리케이션들이 여러 도메인으로 분산돼 있을 경우다. Multi Domain 환경인 경우에는 사용자 인증 및 토큰의 발행을 위한 마스터 에이전트가 존재함 
• 마스터 에이전트는 각 서비스 에이전트의 사용자 인증을 위임 받아 수행하며 인증된 사용자에게는 토큰을 발급하고 각 서비스 에이전트에게 안전하게 전달함 
• 에이전트가 해당 토큰을 자신의 Domain에서 Cookie로 저장해 사용할 수 있도록 함
• 각 서비스 에이전트의 신뢰도 및 SSO 시스템의 보안 레벨에 따라 다음과 같이 두 가지 방식으로 서비스될 수 있음 
- One Token for All Multi Cookie Domain: 
- Token for each cookie domain & One Token for Master Agent


■ 구현 기법


 SSO 보안기술 


항목주요 기능
클라이언트 기반(Client-based)

• Vince Sorensesn사의 쉐어웨어 소프트웨어인 Password Plus와 같은 비밀번호 관리 도구를 이용하면 사용자는 자체 시스템에 수많은 ID와 비밀번호를 '기억'시키고 PC에서 자동으로 입력하게 할 수 있음 
• 이 과정은 사용자가 설치하고 사용하기에 비교적 편리한 장점이 존재하지만 새로운 애플리케이션이나 사이트, 또는 커뮤니티가 추가될 때마다 정보가 갱신되어야 하는 문제점이 존재하며 비밀번호 조합에는 업계 표준이 없기 때문에 문제가 될 수 있음 
• PC 중심의 솔루션이라 평소의 작업 장소가 아닌 경우(예를 들어 여행 중)에는 로그인하는 데 번거로워지는 등 사용자 입장에서는 융통성이 부족하며 기업 네트워크 관리자에게는 조직 전체적으로 통제할 수 있는 방법이 없는 문제점이 존재함

서버 기반(Server-based)

• 중앙 서버에서 각기 다른 모든 비밀번호를 관리할 수 있는 형태로 사용자는 업데이트와 관련한 번거로운 작업(예를 들어, 직무가 변하면 새로운 권한을 인증받는 것)을 하지 않아도 되며, 다양한 PC에서 접근할 수 있는 장점이 존재함 
• 관리자는 비밀번호의 수준을 관리(예를 들어, 사소한 비밀번호의 삭제, 주기적 갱신, 필요시 접속 중단 등)할 수 있으며 서버 기반 시스템의 경우에는 사용자가 여행 중이거나 다른 PC를 사용할 때에도 사용자가 편리하게 이용할 수 있음
• 서버 기반 기법은 클라이언트 시스템에 대한 보안과 관리 문제뿐만 아니라 사용자와 서버 사이에 존재하는 전반적인 환경까지 처리해야 한다는 것이 제약이라고 할 수 있으며 현재 업계 표준이 없기 때문에 더 복잡한 문제점이 존재함
• 서버 기반은 사용자가 온라인에서 하는 모든 활동은 서버를 통하기 때문에, 서버는 항상 사용할 수 있도록 가용성이 보장되어야 함

서비스 기반(Service-based)

• 비밀번호를 하나의 서비스로 제공할 수도 있는 형태로 예를 들어, 마이크로소프트 패스포트(Microsoft Passport)는 기업들 가입의 비밀번호 잡무를 처리하기 위해 중앙집중 서버, 쿠키, 표준화된 구조를 이용하는 형태로 사용자 입장에서는 한번 마이크로소프트 서버에 접속하면 여러 웹사이트에 접속하거나 거래할 때 그 인증이 유지되는 형태임
• 서비스 기반은 수많은 사이트들이 특정 서비스의 제공업자와 제휴된 경우에 사용자에게 편리한 장점이 존재함
• 다양한 사이트에서 일어나는 사용자들의 활동을 포착할 수 있어서 더 심화된 고객 프로필로 연결될 수 있다는 점이 존재하여 기업들의 참여를 유도할 수 있는 장점이 존재함
• 그러나, 이런 기업측의 이점은 이미 개인정보 보호와 관련된 문제 발생 소지가 존재하고 있음


■ 주요 보안 요구 사항


토큰의 네트워크 구간에서의 정보 노출 및 위/변조를 방지하기 위해 여러 보안기술들이 사용되고 있다.


구분설명
Data Confidentiality

• 토큰은 주요 암호 알고리즘(AES, SEED)과 128bit 이상의 키로 암호화돼 보호되어야 함

Data Integrity

• 토큰은 MAC (Message Authentication Code) 등을 포함해 데이터의 무결성을 보장해야 함

Replay Attack Protection

• 토큰은 사용자와 대상 애플리케이션 사이에 전달되는 인증 정보이며 일반적으로 토큰은 네트워크에 노출되며, 노출된 토큰을 사용해 다른 사용자가 인증을 받고 들어올 수 있음(Replay Attack).


 실제 사용되고 있는 SSO 연동 


■ LINE WORKS SSO(Single Sign-On) 소개 영상



 참고 


위키백과

위키

시크릿츠님 블로그

LINE WORKS Korea

'기본 개발 지식' 카테고리의 다른 글

[기본] GW(그룹웨어) 란?  (0) 2019.07.24
[기본] EDI, EAI, B2Bi, SOA, ESB 란?  (1) 2019.07.08
[기본] WEB 과 WAS 차이  (12) 2018.08.23
[기본] 웹서비스 그리고 RESTful, SOAP 란?  (3) 2018.08.23
[기본] XML 이란?  (0) 2018.08.15
Comments