728x90
SSO(Single Sign-On)는 사용자가 여러 시스템에 접근할 때 단 한 번의 로그인으로 모든 시스템에 접근할 수 있게 해주는 인증 공유 메커니즘입니다. SSO는 사용자의 편의성을 높이고, 관리자가 사용자 인증을 중앙에서 관리할 수 있게 해주어 보안성을 강화합니다. 여러 SSO 기술과 표준이 있으며, 각각의 기술은 내부적으로 다른 방식으로 구현됩니다. 여기에는 몇 가지 주요 SSO 기술과 그들의 내부 구현 방식에 대한 간단한 설명이 있습니다:
- SAML (Security Assertion Markup Language):
- 설명: SAML은 XML 기반의 오픈 스탠다드로, 보안 도메인(Identity Provider)에서 다른 도메인(Service Provider)으로 사용자의 인증 및 권한 부여 데이터를 교환하기 위해 사용됩니다.
- 구현 방식: 사용자가 서비스 제공자에 로그인을 요청하면, 서비스 제공자는 사용자를 신원 제공자로 리다이렉션합니다. 사용자는 신원 제공자에서 인증을 받고, 신원 제공자는 SAML 어서션(증언)을 생성하여 서비스 제공자에게 전송합니다. 서비스 제공자는 이 어서션을 검증하여 사용자에게 접근 권한을 부여합니다.
- OpenID Connect:
- 설명: OpenID Connect는 OAuth 2.0 프로토콜을 기반으로 하는 인증 레이어입니다. 웹, 모바일, 그리고 자바스크립트 클라이언트에 대해 간단한 ID와 인증 시스템을 제공합니다.
- 구현 방식: 사용자가 클라이언트 애플리케이션에 로그인을 요청하면, 애플리케이션은 사용자를 인증 서버로 리다이렉션합니다. 사용자가 인증 서버에서 인증을 받으면, 인증 서버는 애플리케이션에 ID 토큰(사용자 정보가 포함된 JWT)과, 필요한 경우, 액세스 토큰을 발급합니다. 애플리케이션은 ID 토큰을 검증하여 사용자를 인증합니다.
- OAuth 2.0:
- 설명: OAuth 2.0은 서드파티 애플리케이션에게 사용자의 웹 서비스에 대한 제한된 접근 권한을 안전하게 위임할 수 있는 프레임워크입니다. OAuth 자체는 인증보다는 인가에 중점을 둡니다, 하지만 OpenID Connect와 같은 레이어를 통해 인증 메커니즘으로 확장될 수 있습니다.
- 구현 방식: 사용자가 서비스에 접근을 요청하면, 애플리케이션은 사용자를 인증 서버로 리다이렉션하여 인증을 요청합니다. 사용자가 인증하면, 인증 서버는 애플리케이션에게 액세스 토큰을 발급합니다. 이 토큰을 사용하여 애플리케이션은 사용자를 대신하여 자원 서버에서 정보를 요청할 수 있습니다.
- Kerberos:
- 설명: Kerberos는 네트워크 상에서 사용자와 서비스 간의
- 구현 방식: 사용자가 서비스에 접근을 시도할 때, 사용자는 중앙 인증 서버에서 티켓을 요청합니다. 이 티켓은 사용자의 ID가 암호화된 형태로, 해당 서비스와 공유된 비밀 키로 암호화됩니다. 사용자는 이 티켓을 서비스 제공자에게 제시하여 인증을 받습니다. 서비스 제공자는 티켓을 해독하여 사용자를 인증합니다.
각 SSO 기술은 사용자의 인증 정보를 다루는 방식과 보안 요구 사항에 따라 다르게 선택될 수 있습니다. SAML과 OpenID Connect는 주로 웹 기반 SSO에 사용되며, OAuth 2.0은 API 접근 제어에 주로 사용되고, Kerberos는 네트워크 보안이 중요한 엔터프라이즈 환경에서 사용됩니다.