안녕하세요. 오늘은 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는 제휴자로부터 받은 인증 정보를 검증하여 사용자를 인가합니다.
이를 활용한 기술로는 SAML과 OpenID Connect가 있어요. 이는 잠시후에 자세히 다룰 예정이에요.
4-2. 인증 정보 전달 모델(Direct Authentication Model)
인증 정보 전달 모델은 사용자가 직접 서비스 제공자에 로그인하며, 인증 정보가 서비스 제공자 간에 전달됩니다.
사용자가 한 SP에 로그인하면, 해당 SP가 다른 SP에 사용자의 인증 정보를 전달하여, 접근을 허용해요.
이 모델은 일반적으로 사용자 경험이 복잡해질 수 있으며, 보안 관리가 더 어려울 수 있습니다.
이를 활용한 기술로는 OAuth와 Kerberos가 있어요. 이는 잠시후에 자세히 다룰 예정이에요.
5. SSO 구현기술
그럼 이제 SSO를 구현한 기술들에 대해 알아봅시다.
5-1. SAML(Security Assertion Markup Language)
SAML은 SSO 기능을 제공하는 XML 기반의 표준이에요.
전에 언급했듯이, 사용자가 인증된 정보를 제휴자(IdP)에서 서비스 제공자(SP)로 안전하게 전송합니다.
이를 통해 서로 다른 도메인 간의 인증 및 권한 부여를 가능하게 해요.
※ XML(eXtensible Markup Language) : 데이터를 구조화하고 저장하며, 전송하기 위한 마크업 언어
5-2.OAuth(Open Authorization)
OAuth는 사용자 인증 및 권한 부여를 위한 프로토콜로, 제 3자 애플리케이션(ex: google, fackbook)이 사용자의 자원에 접근할 수 있도록 허용합니다.
사용자는 자신의 로그인 정보를 공유하지 않고도 애플리케이션에 권한을 부여할 수 있어요.
이를 통해 보안을 강화하고 사용자 경험을 개선하는 데 기여합니다.
5-3. OpenID Connect
OpenID Connect는 OAuth 2.0 프로토콜을 기반으로 한 인증 레이어로, 사용자 인증을 위한 표준입니다.
이 프로토콜은 ID Token을 통해 사용자에 대한 정보를 안전하게 전송하며, 다양한 클라이언트 애플리케이션을 사용자의 신원을 검증할 수 있도록 해요.
5-4. Kerberos
Kerberos는 네트워크 상의 사용자와 서비스 간의 인증을 제공하는 프로토콜입니다.
주로 대칭 키 암호화를 사용하여 사용자 인증을 수행하고, 인증된 사용자가 네트워크 리소스에 접근할 수 있도록 해요.
또한, 티켓 기반의 접근 제어를 통해 보안을 강화하며, 여러 플랫폼에서 널리 사용됩니다.
6. SSO의 장단점
SSO에는 장점과 단점이 존재합니다.
SSO는 여러 애플리케이션에 대해 한 번의 로그인만으로 접근이 가능하다는 큰 장점이 있어요.
또한, 중앙에서 사용자 인증 정보를 관리하여, 보안성을 높이고 관리 부담을 줄일 수 있습니다.
개별 시스템에서 인증 로직을 구현할 필요 없이, 중앙 인증 서버에서 모든 인증을 처리해요.
하지만, SSO는 서버가 다운되거나 문제가 발생하면, 모든 시스템에 로그인할 수 없게 되는 위험이 있습니다.
그리고, 다양한 애플리케이션과 통합하는 과정에서 설정이 복잡해 질 수 있어요.
7. 정리하며
지금까지 SSO에 대해 알아보았습니다.
이는 대규모 조직에서 여러 내부 및 외부 애플리케이션에 대한 접근을 관리할 때, 매우 유용한 도구라고 생각해요.
참고
duck-ach 님의 [ SSO ] 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 |