웹 개발/Auth

SSO(Single Sign-On)

devsean 2025. 6. 11. 21:41

SSO(Single Sign-On)

1회 사용자 인증으로 다수의 서비스에 로그인을 허용하는 통합 로그인(인증) 솔루션이다. 구글을 예로 들면, Google Drive, GMail 등 여러 서비스에 로그인 할 때 하나의 서비스에서 로그인하면 다른 곳에서도 가능한 구조이다. 사용자 편의성을 제공하지만, 단일 실패점이 되어 관련된 모든 서비스가 다 이용 불가능한 리스크도 존재한다.

 

Architecture

  • SP(Service Provider) : 개별 서비스 및 어플리케이션
  • IdP(Identity Provider) : 각 SP들의 인증 로직을 분리하여 구현해 놓은 하나의 웹 서비스

 

SSO 구현 모델

다음과 같은 방법들로 구현할 수 있다.

 

인증 대행 모델(Delegation Model)

서비스의 인증 방식을 변경하지 않고, SSO Agent가 사용자 인증 정보를 관리하여 대신 로그인(ID/PW 가지고 있다가 대신 로그인)한다. 권한을 얻으려는 서비스의 인증 방식을 변경하기 어려운 경우에 사용한다.

 

인증 정보 전달 모델(Propagation Model)

통합 인증을 수행하는 곳에서 인증을 받아 인증 토큰을 발급한다. 유저가 서비스에 접근할 때 발급받은 토큰을 서비스에 같이 전달하게 되고, 서비스는 토큰 정보를 통해 사용자를 인식한다. 웹 기반의 시스템에 주로 사용된다.

 

Delegation & Propagation

개별 어플리케이션의 특성이 다양한 경우, 두 방식을 혼용해서 전체 시스템의 SSO를 구성한다.

 

(Web 기반) One Cookie Domain SSO

SSO 대상 서비스와 응용 어플리케이션들이 하나의 Cookie Domain 안에 존재할 때 사용된다. 일반적인 기업 내부의 컴퓨팅 환경에서 사용된다. 통합 인증을 받은 사용자는 토큰을 발급받으며, 이 토큰은 Cookie에 설정되어 Cookie Domain 내의 다른 서비스로 접근할 때 자동으로 토큰을 서비스에 제공한다. 서비스에서 동작되는 SSO 에이전트는 토큰으로부터 사용자 신원을 확인하고 요청된 자원에 대한 접근을 허가한다.

 

(Web 기반) Multi Cookie Domain SSO

SSO 대상 서비스와 응용 어플리케이션이 여러 도메인으로 분산되어 있는 경우에 사용된다. Multi Domain 환경의 경우, 사용자 인증 및 토큰 발행을 위한 마스터 에이전트가 존재한다. 마스터 에이전트는 각 서비스 에이전트의 사용자 인증을 위임받아 수행하며, 인증된 사용자에게는 토큰을 발급하고 각 서비스 에이전트에게 안전하게 전달한다. 서비스 에이전트가 해당 토큰을 자신의 Domain에서 Cookie로 저장하여 사용할 수 있도록 한다.(HTTP 응답 시 토큰 담아서 보내줌) 각 서비스 에이전트의 신뢰도 및 SSO 시스템의 보안 레벨에 따라 다음과 같이 두 가지 방식으로 서비스 될 수 있다.

  1. One Token for All Multi Cookie Domain
  2. Token for Each Cookie Domain & One Token for Master Agent

 

Sequence Diagram(Propagation Model)

  • SessionID는 구현 예시일 뿐이며, 그냥 ‘인증된 상태인지 여부를 체크한다’ 정도로 받아들이고 넘기면 될 것 같다.

참고 자료

웹 기반 통합 인증 (SSO) 구현

[개념] SSO(Single Sign-On) 이란?

SSO란 무엇인가! 이해해봅시다

SSO -