security
회사 시스템이나 SaaS를 여러 개 쓰다 보면, 로그인을 계속 반복해야 해서 번거롭다는 느낌을 받을 때가 있습니다.
그래서 등장한 개념이 SSO(Single Sign-On) 입니다. 한 번 로그인하면 여러 서비스가 자동으로 로그인되는 구조입니다. 그 중심에 있는 개념이 바로 IdP 와 SP 입니다.
이 사용자가 누구인지 증명해주는 주체입니다. 즉, 사용자의 신원을 확인하고 로그인 절차를 처리하는 역할을 담당합니다. IdP는 인증(Authentication)을 수행하고, 그 결과를 토큰(ID Token, Access Token 등) 형태로 발급합니다.
Service Provider(SP) 는 사용자가 실제로 이용하는 응용 서비스(애플리케이션) 를 의미합니다. SP는 사용자의 로그인 자체를 처리하지 않고, 대신 IdP가 발급한 인증 결과(토큰) 를 신뢰합니다. 이를 통해 SP는 이 사용자가 인증된 사용자임을 확인할 수 있습니다.
회사 건물 출입을 예로 들어볼 수 있습니다.
| 역할 | 현실 비유 | 설명 |
|---|---|---|
| IdP | 출입증 발급 데스크 | “직원 맞으시네요. 출입증 발급해드릴게요.” — 신원 확인 및 출입증 발급 담당 |
| SP | 출입문 및 회의실 | “출입증이 있네요. 들어오세요.” — 인증된 사용자만 접근 허용 |
사용자는 IdP에서 신원을 확인받고 출입증(토큰)을 발급받은 뒤, SP에 출입증을 제시해 서비스에 접근하는 구조입니다. 이 일련의 과정이 바로 SSO(Single Sign-On) 의 핵심 흐름입니다. 한 번 로그인하면 여러 서비스(SP)들이 같은 IdP를 신뢰하기 때문에, 다시 로그인할 필요 없이 자동으로 인증이 이어집니다.
SSO나 OIDC 기반 로그인은 결국 “인증 주체(IdP)”와 “서비스 제공자(SP)” 간의 신뢰 교환 과정입니다. 아래는 사용자가 서비스를 이용할 때 실제로 일어나는 흐름입니다.
이러한 동작을 한 문장으로 정리하면, 로그인은 IdP에서 수행되고, SP는 그 인증 결과만 신뢰합니다. 이 구조 덕분에 사용자는 여러 서비스에 대해 한 번의 로그인으로 여러 곳에 자동으로 접근(SSO) 할 수 있고, 각 서비스(SP)는 인증 책임을 IdP에 위임함으로써 보안과 관리 효율성을 동시에 얻을 수 있습니다.
결국 두 방식 모두 목적은 IdP가 인증한 사용자를 SP가 신뢰할 수 있도록 만드는 것입니다.
앞서 본 것처럼, SSO는 IdP(인증 주체) 와 SP(서비스 제공자) 가 역할을 나누어 “로그인은 IdP가, 서비스 이용은 SP가” 담당하는 구조입니다. 이 구조를 사용하는 이유는 단순합니다. 사용자는 편리하게, 기업은 안전하게 서비스를 제공 할 수 있기 때문입니다.
| 장점 | 설명 |
|---|---|
| 로그인 편의성 | 한 번 로그인하면 여러 서비스(SP)를 자동으로 이용할 수 있습니다. |
| 비밀번호 리스크 감소 | 각 서비스에 비밀번호를 저장하지 않아도 되므로 탈취 위험이 줄어듭니다. |
| 계정 관리 단순화 | 계정 생성·삭제·권한 변경을 IdP 한 곳에서 중앙 관리할 수 있습니다. |
| 보안 강화 | MFA(OTP, 인증 앱 등)를 IdP에 통합 적용하여 전체 보안을 강화할 수 있습니다. |
SSO나 OIDC를 도입할 때 기술적으로 복잡해 보이지만, 사실 현업에서 문제를 일으키는 부분은 대부분 “데이터 정의”와 “정책 합의”입니다. 아래 세 가지 항목만 명확히 맞춰두면 대부분의 연동은 매끄럽게 진행됩니다.
| 항목 | 왜 중요한가 |
|---|---|
| 사용자 식별값(이메일/UUID) | 서비스끼리 동일 사용자를 정확히 이어야 함 |
| 사용자 그룹/역할 정보 | 로그인 후 권한을 구분해야 함 |
| 로그아웃 정책 | 한 서비스만 로그아웃할지, 전체 로그아웃할지 결정 필요 |
이러한 sso 사용을 통해 로그인 과정을 분리해 보안은 강화하고, 사용자 경험(UX)은 단순화한 구조를 활용 할 수 있습니다.