SSO? Single Sign On 이란?

드디어 여기까지 왔다.

SSO 부터 설명할 내용들이 많아서 용어 정리를 먼저 하고 가려고 한다
SSO 는 사실 인증이라는 큰 범위 안의 하나의 scheme 즉 일부일 뿐이다

A visualization of how SSO works
Single sign-on (SSO) is an authentication scheme that allows a user to log in with a single ID and password to any of several related, yet independent, software systems. True single sign-on allows the user to log in once and access services without re-entering authentication factors.
SSO (Single Sign-On)인증 체계이다 (that)
사용자가 하나의 ID와 PW로 여러 개의 관련되어 있지만 독립적인 소프트웨어 시스템에 로그인할 수 있도록 합니다
진짜 single sign-on 은 user 가 로그인 한 번에 - 다시 인증 요소를 입력하는 일 없이 - 여러 서비스에 접근할 수 있습니다

IT쪽에서 일을 하다보면 일반적으로 사람들은 SSO를 보통 아래 문장들 처럼 생각한다

  • 사이트에 1번 로그인 하면 여러 사이트에서 다 사용하는 것
  • Facebook 으로 로그인, Google 로 로그인 같은 사이트 로그인을 이용 하는 것

정도로 알고 있다. 당신도 그러한가?

좀 더 SSO의 의미에 맞게 고쳐보자

  • SSO를 지원하는 사이트에서 (가입 후에) 1번 로그인 하면 관련되어 있(지만 아직은 독립적인)는 사이트들에서 로그인 할 필요 없이 인증 된 것 처럼 사용하는 것
  • 너무 길다 중요한 단어들만 나열해보자
  • 사이트에 가입 후 1번 로그인 하면 해당 인증 으로 관련된 사이트 에서 로그인 없이 인증 된 것 처럼 사용하는 것

여기에서  "사이트"에 국한된 것이 아니라, "모바일 앱" 일 수도 있고 "소프트웨어" 일 수도 있다 원문에서 "any of several related, yet independent, software systems." 을 말했으니까..

내가 생각하는 SSO라는 의미는 "인증"이라는 범주 안의 행위(behavior)를 SSO 라는 용어로 만들어 버린 내용이다 (라고 내 딴에 정의를 해본다 - 썰을 풀어본다)  백스피릿 보면서 썰(Theory) 봐서...
단 1번의 로그인을 하여 "인증"이 된다면 다른 관련된 사이트에서 로그인 하지 않고 그대로 사용이 된다는 내용이다

이렇게만 쓰면 잘 와닿지 않는 개발자 공대 감성 분들이 많을테니 우선 이해를 잘 하기 위해서 우리들의 과거 시절의 경험을 빗대어 설명하게 되면 머리에 강하게 인식 되기 때문에 빠르게 이해가 될 것이다

관련되어 있지만 (any of several related), 아직 독립적인 (yet independent) 에 대해서 이해하기 편하게 말할 수 있는 것은 다들 한 번씩은 경험이 있는 증오의 FAMILY SITES 일 것이다

과거 SSO 작업을 했던 모든 사이트들이 욕을 먹지 않은 곳이 없을 정도로 왜 모든 기업들은 FAMILY SITES가 모두 하나의 SSO로 묶이는 것을 좋아했고, 그 결과 모두 묶인 인증은 나중에 비지니스를 더 확장 시켜야 하는 상황에서 모두의 발목을 잡게 되고, 그 결과가 계속 이어지니 개발은 난장판 되고.... 한 번 모은 인증 DB는 다시 분리 하기가 힘들어지고... (무한반복)

토큰 기반 인증이 활성화 되기 이전에는 SSO를 구현하는게 굉장한 어려운 기술이었다

세션 기반 인증으로 인증 후에 분산처리를 하고, 그 분산된 로그인 세션들을 관리하는 것이 기술적인 특별 이슈 이기 때문이다. Family Sites 라고 하지만 도메인이 다른 사이트에서 쿠키도 공유가 되지 않고,  CORS 문제도 산재 하는데, 그 안에서 세션이 어떻게든 공유 되고, 그 공유된 정보를 바탕으로 SSO를 구현했으니 그 당시 예전에는 엄청나게 기술적으로 어려운 내용이었고, 그것을 해내는 곳들은 대기업들 SSO는 대기업 위주의 기술일 뿐이었다. (아련 하게 당시를 생각함)

Facebook (now Meta), Google, Twitter 같은 기업들이 나오면서 토큰 기반 인증이 대세로 자리 잡고, 그 결과 우리는 현재 우리가 아는 OAuth2 를 사용하는 형태의 SSO를 만나게 된다

References

Single sign-on - Wikipedia