SSO
SSO에 대해서 잘못알고있었다..!
들어가며
최근 로그인 구조를 정리하면서 SSO(Single Sign-On) 라는 개념을 다시 보게 되었습니다.
처음에는 SSO를 여러 소셜 로그인 계정이 하나의 사용자 계정으로 연결되는 개념이라고 생각했습니다.
예를 들어 사용자가 카카오로 로그인한 뒤, 나중에 구글로 로그인해도 같은 사람이라고 판단되면 두 로그인 수단이 하나의 계정을 바라보는 구조라고 이해했습니다.
카카오 로그인 ┐
├→ 같은 사용자 계정
구글 로그인 ┘
하지만 다시 정리해보니, 이건 SSO라기보다는 계정 연동에 가까운 개념이었습니다.
내가 잘못 알고 있던 것
제가 처음에 생각했던 구조는 다음과 같습니다.
카카오 로그인
→ 사용자 확인
→ 서비스 계정 생성
이후 구글 로그인
→ 같은 사용자라고 판단
→ 기존 서비스 계정에 연결
즉, 여러 로그인 수단이 하나의 사용자 계정을 바라보는 구조를 SSO라고 생각했습니다.
카카오 로그인 수단 ┐
구글 로그인 수단 ├→ users.id = 1
애플 로그인 수단 ┘
하지만 이 구조는 SSO가 아니라 소셜 계정 연동(Account Linking) 에 더 가깝습니다.
실제 SSO의 의미
SSO는 Single Sign-On의 약자입니다.
말 그대로 한 번 로그인하면 여러 서비스를 다시 로그인하지 않고 사용할 수 있게 해주는 인증 방식입니다.
예를 들어 회사에서 한 번 로그인하면 다음 서비스들을 모두 사용할 수 있다고 가정해보겠습니다.
- 그룹웨어
- 메일
- 인사 시스템
- 결재 시스템
- 개발자 포털
SSO가 없다면 각 서비스마다 로그인을 해야 합니다.
그룹웨어 로그인
메일 로그인
인사 시스템 로그인
결재 시스템 로그인
반대로 SSO가 있다면 한 번만 로그인하면 됩니다.
SSO 로그인
→ 그룹웨어
→ 메일
→ 인사 시스템
→ 결재 시스템
즉, SSO의 핵심은 다음과 같습니다.
여러 로그인 수단을 하나로 묶는 것이 아니라, 하나의 인증 시스템으로 여러 서비스를 이용하는 것
내가 생각했던 것은 계정 연동이었다
제가 처음에 SSO라고 생각했던 것은 정확히는 계정 연동이었습니다.
계정 연동은 여러 로그인 수단을 하나의 사용자 계정에 연결하는 방식입니다.
예를 들어 한 사용자가 카카오와 구글 로그인을 모두 연결할 수 있습니다.
카카오 로그인 수단 ┐
구글 로그인 수단 ├→ 같은 사용자 계정
애플 로그인 수단 ┘
이렇게 하면 사용자는 카카오로 로그인해도, 구글로 로그인해도 같은 서비스 계정에 접근할 수 있습니다.
SSO와 계정 연동의 차이
| 구분 | 의미 |
|---|---|
| SSO | 한 번 로그인해서 여러 서비스를 사용하는 구조 |
| 소셜 로그인 | 카카오, 구글, 네이버 같은 외부 계정으로 로그인하는 방식 |
| 계정 연동 | 여러 로그인 수단을 하나의 사용자 계정에 연결하는 방식 |
정리
처음에는 SSO를 다음처럼 이해했습니다.
카카오 로그인과 구글 로그인이 같은 사용자를 바라보면 SSO다
하지만 정확히는 다음과 같습니다.
SSO
= 하나의 인증 시스템으로 여러 서비스를 이용하는 구조
계정 연동
= 여러 로그인 수단을 하나의 사용자 계정에 연결하는 구조
즉, 제가 처음에 생각했던 것은 SSO가 아니라 소셜 계정 연동이었습니다.
마무리
이번에 SSO와 계정 연동의 차이를 정리하면서 로그인 설계에서 중요한 점을 다시 알게 되었습니다.