SSO(Single Sign-On, 단일 로그인)은 사용자가 한 번 로그인하면 여러 개의 독립된 시스템이나 애플리케이션에 대해 별도의 로그인 절차 없이 접근할 수 있도록 해주는 인증 방식입니다.
🔑 핵심 특징
- 단일 인증: 최초 한 번의 로그인으로 여러 서비스 이용 가능
- 중앙 집중 관리: 계정과 권한을 중앙에서 통제
- 보안 및 편의성 향상: 비밀번호 관리 부담 감소, 비밀번호 피싱 위험 줄어듦
🔑 동작 방식
- 사용자가 **SSO 서버(IdP, Identity Provider)**에 로그인
- IdP가 인증 완료 후 토큰/세션/쿠키 형태로 인증 정보를 발급
- 사용자가 다른 서비스(SP, Service Provider)에 접속할 때 IdP에서 발급받은 인증 정보를 전달
- SP는 IdP의 검증 결과를 신뢰하고 사용자를 로그인 처리
🔑 대표 기술/프로토콜
- SAML (Security Assertion Markup Language)
- OAuth 2.0 / OpenID Connect (OIDC)
- Kerberos
🔑 활용 사례
- 기업 내부 인트라넷 + 그룹웨어 + ERP + 메일 통합 로그인
- 구글 계정으로 다양한 외부 서비스 로그인 (Google Workspace 기반 SSO)
- Microsoft Azure AD, Okta, Keycloak 같은 솔루션
🔑 기본 구조
SSO는 보통 IdP(Identity Provider) 와 SP(Service Provider) 구조로 동작합니다.
- IdP: 사용자 인증을 담당하는 중앙 인증 서버 (예: Keycloak, Azure AD, Okta)
- SP: 사용자가 실제 이용하려는 애플리케이션 (ERP, 메일, CRM 등)
사용자는 SP에 직접 로그인하지 않고, IdP를 통해 인증 후 토큰/세션을 받아 SP에서 로그인된 것처럼 처리됩니다.
⚙️ 주요 프로토콜별 동작 방식
1. SAML 2.0 (XML 기반)
- 주로 엔터프라이즈 환경에서 사용
- 동작 흐름:
- 사용자가 SP에 접근 → SP가 인증 필요로 IdP로 Redirect
- IdP 로그인 성공 시 SAML Assertion(XML)을 생성하여 브라우저를 통해 SP로 전달
- SP가 Assertion 서명 검증 → 세션 발급 → 로그인 완료
- 특징: 브라우저 리다이렉션 + XML 서명 기반
2. OAuth 2.0 + OpenID Connect(OIDC) (JSON 기반)
- 웹/모바일 앱에서 가장 많이 사용됨
- 동작 흐름:
- 클라이언트가 IdP의 Authorization Server에 인증 요청
- 로그인 성공 → Access Token / ID Token(JWT) 발급
- SP(또는 API 서버)가 토큰을 검증 후 사용자 인증 처리
- 특징: JWT(JSON Web Token), RESTful 친화적, 모바일/SPA 앱에 최적
3. Kerberos (네트워크 인증 프로토콜)
- Windows AD 기반 환경에서 자주 사용
- 동작 흐름:
- 사용자가 KDC(Key Distribution Center)에 인증 → TGT(Ticket Granting Ticket) 획득
- 특정 서비스 접근 시 TGT로부터 Service Ticket 획득
- 서비스에 Service Ticket 제시 → 인증 완료
- 특징: 대칭키 기반, 네트워크 내부 환경에 강함
4. 인증 정보 전달 방식
- 세션 쿠키: 전통적인 웹 기반 SSO (SAML, Kerberos 기반 웹 SSO)
- JWT 토큰: OIDC/OAuth2에서 표준적으로 사용됨
- 티켓 기반: Kerberos의 Service Ticket
5. 보안 고려사항
- 토큰 유효 기간 관리: Access Token은 짧게, Refresh Token은 안전하게 저장
- 서명 검증: 토큰/Assertion은 반드시 공개키 기반 서명 검증 필요
- Replay Attack 방지: Nonce, Timestamp, TLS 필수
- SSO 로그아웃: IdP 로그아웃 시 모든 SP 세션도 정리되어야 함 (SLO: Single Logout)
6. 실제 구현 예시
- Keycloak: Open Source IdP, SAML & OIDC 지원
- Azure AD: Microsoft SaaS 및 엔터프라이즈 연동
- Okta: 클라우드 기반 SSO 서비스
- Spring Security / Go OIDC 라이브러리: SP 측에서 토큰 검증 시 활용
👉 정리하면:
- SAML = XML, 기업 레거시 시스템 중심
- OIDC = JSON, 웹/모바일 현대 앱 중심
- Kerberos = 티켓 기반, 사내 네트워크 중심
'소프트웨어 > 상식' 카테고리의 다른 글
| 보안 및 인증 분야 "토큰(Token)" (0) | 2025.09.20 |
|---|---|
| SAML(Security Assertion Markup Language) (0) | 2025.09.20 |
| KCMVP(Korea Cryptographic Module Validation Program) (0) | 2025.09.19 |
| 주요 소프트웨어 / 서비스 포트 번호 (0) | 2025.09.18 |
| 패스키(Passkey) (1) | 2025.09.17 |