SSO(Single Sign-On)

안녕하세요. 오늘은 SSO가 무엇인지, 어떠한 원리와 장점들을 가지고 있는 지 알아봅시다!

 


1. SSO(Single Sign-On)

SSO란? 하나의 인증 과정으로 여러 시스템 or 애플리케이션접근할 수 있도록 하는 인증 메커니즘이에요.

사용자는 한 번 로그인하면, 동일한 인증 정보를 이용다른 애플리케이션 or 시스템 추가 로그인 없이 접근할 수 있습니다.

이는 사용자 경험을 개선하고, 보안 관리의 복잡성을 줄이며, 인증 정보를 통합적으로 관리할 수 있게 해줘요.

 


2. SSO의 특징

SSO는 어떠한 특징을 가지고 있는 지 알아봅시다.

 

2-1. 사용자 편의성

사용자는 여러 시스템에 로그인할 때마다 별도의 자격 증명을 입력할 필요가 없어요.

한 번 인증이 완료되면, 다른 시스템에서도 자동으로 인증이 유지됩니다.

 

2-2. 중앙 집중식 인증

모든 인증 요청은 중앙 인증 서버에서 처리됩니다. 즉, 개별 애플리케이션이 사용자 인증을 직접 처리하지 않고, 인증 서버로 위임합니다.

 

2-3. 보안 관리 향상

인증 정보(ex: 비밀번호)는 중앙 시스템에서만 저장 및 관리되므로, 보안 위험을 줄일 수 있어요.

 

2-4. SSO Token

사용자가 인증을 받으면, 서버는 사용자에게 SSO Token발급합니다.

이 토큰은 사용자의 인증 상태를 나타내며, 다른 시스템에서 해당 토큰을 확인해 인증 여부를 결정해요.

 


3. SSO의 원리

SSO는 어떠한 방법으로 동작하는 지 알아봅시다.

 

3-1. 사용자 로그인

사용자가 SSO 지원 애플리케이션에 접근하려고 하면, SSO 시스템중앙 인증 서버로 리다이렉트하여, 로그인을 요구해요.

 

3-2. 인증

사용자는 인증 서버에서 자격 증명을 입력하고, 서버가 이를 확인한 후 SSO Token생성하여 사용자에게 전달합니다.

※ SSO Token : 사용자에게 발급된 임시 ID 카드와 같이 사용자의 브라우저 or SSO 서비스의 서버에 저장된 디지털 정보

 

사용자의 SSO Token을 앱에 전달하면, 사용자가 허용됩니다.

 

3-3. 애플리케이션 접근

사용자가 다른 애플리케이션에 접근하려고 할 때, 해당 애플리케이션은 SSO Token을 확인하고 사용자가 이미 인증되었는 지 판단해요.

인증이 완료되었다면, 추가 로그인 없이 접근이 가능합니다.

 


4. SSO 구조

SSO는 크게 두 가지 구조로 나뉩니다.

 

4-1. 인증 대행 모델(Delegated Authentication Model)

인증 대행 모델은 사용자가 인증을 위해 신뢰할 수 있는 제휴자(IdP)에서 인증을 받은 후, 해당 제휴자가 서비스 제공자(SP)로 인증 정보를 전달해요.

사용자는 제휴자에 로그인한 상태에서 여러 SP에 접근할 수 있으며, 각 SP제휴자로부터 받은 인증 정보를 검증하여 사용자를 인가합니다.

이를 활용한 기술로는 SAMLOpenID Connect가 있어요. 이는 잠시후에 자세히 다룰 예정이에요.

 

4-2. 인증 정보 전달 모델(Direct Authentication Model)

인증 정보 전달 모델은 사용자가 직접 서비스 제공자에 로그인하며, 인증 정보가 서비스 제공자 간에 전달됩니다.

사용자가 한 SP로그인하면, 해당 SP다른 SP사용자의 인증 정보를 전달하여, 접근을 허용해요.

이 모델은 일반적으로 사용자 경험이 복잡해질 수 있으며, 보안 관리가 더 어려울 수 있습니다.

이를 활용한 기술로는 OAuthKerberos가 있어요. 이는 잠시후에 자세히 다룰 예정이에요.

 


5. SSO 구현기술

그럼 이제 SSO를 구현한 기술들에 대해 알아봅시다.

 

5-1. SAML(Security Assertion Markup Language)

SAMLSSO 기능을 제공하는 XML 기반의 표준이에요.

전에 언급했듯이, 사용자가 인증된 정보제휴자(IdP)에서 서비스 제공자(SP)로 안전하게 전송합니다.

이를 통해 서로 다른 도메인 간의 인증 및 권한 부여를 가능하게 해요.

※ XML(eXtensible Markup Language) : 데이터를 구조화하고 저장하며, 전송하기 위한 마크업 언어

 

5-2.OAuth(Open Authorization)

OAuth사용자 인증 및 권한 부여를 위한 프로토콜로, 제 3자 애플리케이션(ex: google, fackbook)이 사용자의 자원에 접근할 수 있도록 허용합니다.

사용자는 자신의 로그인 정보를 공유하지 않고도 애플리케이션에 권한을 부여할 수 있어요.

이를 통해 보안을 강화하고 사용자 경험을 개선하는 데 기여합니다.

 

5-3. OpenID Connect

OpenID ConnectOAuth 2.0 프로토콜을 기반으로 한 인증 레이어로, 사용자 인증을 위한 표준입니다.

이 프로토콜은 ID Token을 통해 사용자에 대한 정보를 안전하게 전송하며, 다양한 클라이언트 애플리케이션사용자의 신원을 검증할 수 있도록 해요.

 

5-4. Kerberos

Kerberos네트워크 상의 사용자와 서비스 간의 인증을 제공하는 프로토콜입니다.

주로 대칭 키 암호화를 사용하여 사용자 인증을 수행하고, 인증된 사용자가 네트워크 리소스에 접근할 수 있도록 해요.

또한, 티켓 기반의 접근 제어를 통해 보안을 강화하며, 여러 플랫폼에서 널리 사용됩니다.

 


6. SSO의 장단점

SSO에는 장점과 단점이 존재합니다.

SSO여러 애플리케이션에 대해 한 번의 로그인만으로 접근이 가능하다는 큰 장점이 있어요.

또한, 중앙에서 사용자 인증 정보를 관리하여, 보안성을 높이고 관리 부담을 줄일 수 있습니다.

개별 시스템에서 인증 로직을 구현할 필요 없이, 중앙 인증 서버에서 모든 인증을 처리해요.

 

하지만, SSO서버가 다운되거나 문제가 발생하면, 모든 시스템에 로그인할 수 없게 되는 위험이 있습니다.

그리고, 다양한 애플리케이션과 통합하는 과정에서 설정이 복잡해 질 수 있어요.

 


7. 정리하며

지금까지 SSO에 대해 알아보았습니다.

이는 대규모 조직에서 여러 내부 및 외부 애플리케이션에 대한 접근을 관리할 때, 매우 유용한 도구라고 생각해요.

 

참고

duck-ach 님의 [ SSO ] SSO(Single Sign-On)에 대해서

GRU 님의 호다닥 공부해보는 SSO와 친구들 (SAML, OAuth, OIDC)

토마's 님의 SSO (Single Sign-On)이란?

'Computer Science' 카테고리의 다른 글

소프트웨어 버전 규칙  (2) 2024.11.01
LDAP(Lightweight Directory Access Protocol)  (1) 2024.10.16
NMS(Network Management System)  (0) 2024.07.14
MVC 패턴  (0) 2024.07.07
인터넷 동작 원리  (0) 2024.07.03