SSO(Single Sign-On, 단일 로그인)은 사용자가 한 번 로그인하면 여러 개의 독립된 시스템이나 애플리케이션에 대해 별도의 로그인 절차 없이 접근할 수 있도록 해주는 인증 방식입니다.

 

🔑 핵심 특징

  • 단일 인증: 최초 한 번의 로그인으로 여러 서비스 이용 가능
  • 중앙 집중 관리: 계정과 권한을 중앙에서 통제
  • 보안 및 편의성 향상: 비밀번호 관리 부담 감소, 비밀번호 피싱 위험 줄어듦

🔑 동작 방식

  1. 사용자가 **SSO 서버(IdP, Identity Provider)**에 로그인
  2. IdP가 인증 완료 후 토큰/세션/쿠키 형태로 인증 정보를 발급
  3. 사용자가 다른 서비스(SP, Service Provider)에 접속할 때 IdP에서 발급받은 인증 정보를 전달
  4. 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 기반)

  • 주로 엔터프라이즈 환경에서 사용
  • 동작 흐름:
    1. 사용자가 SP에 접근 → SP가 인증 필요로 IdP로 Redirect
    2. IdP 로그인 성공 시 SAML Assertion(XML)을 생성하여 브라우저를 통해 SP로 전달
    3. SP가 Assertion 서명 검증 → 세션 발급 → 로그인 완료
  • 특징: 브라우저 리다이렉션 + XML 서명 기반

2. OAuth 2.0 + OpenID Connect(OIDC) (JSON 기반)

  • 웹/모바일 앱에서 가장 많이 사용됨
  • 동작 흐름:
    1. 클라이언트가 IdP의 Authorization Server에 인증 요청
    2. 로그인 성공 → Access Token / ID Token(JWT) 발급
    3. SP(또는 API 서버)가 토큰을 검증 후 사용자 인증 처리
  • 특징: JWT(JSON Web Token), RESTful 친화적, 모바일/SPA 앱에 최적

3. Kerberos (네트워크 인증 프로토콜)

  • Windows AD 기반 환경에서 자주 사용
  • 동작 흐름:
    1. 사용자가 KDC(Key Distribution Center)에 인증 → TGT(Ticket Granting Ticket) 획득
    2. 특정 서비스 접근 시 TGT로부터 Service Ticket 획득
    3. 서비스에 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 = 티켓 기반, 사내 네트워크 중심

 

+ Recent posts