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


서론

안녕하세요. 이번 포스팅에서는 Web에서의 인증 방식의 하나인 SSO(Single Sign On)가 무엇인지, 어떤 불편함을 해소 하기 위한 기술인지 설명드리려고 합니다. 세세하고 딱딱한 기술적인 사항을 설명 드리기 보다는, 시간내서 포스팅 읽으시는 분들이 정말로 SSO가 무엇인지 이해하고, 머리속에 큰 그림을 그릴 수 있도록 돕고 싶어요.


SSO가 왜 필요한가

SSO가 없을 때의 상황을 먼저 머리속에 그려볼게요.

우선 카카오톡, 페이스북, 넷플릭스 라는 세 가지 서비스를 생각해볼까요. 세 개의 서비스는 각자의 방식으로 로그인을 요구합니다. 아래 사진 처럼요. 카카오톡을 쓰려면 카카오톡 아이디로 로그인을 해야하고, 넷플릭스를 쓰려면 넷플릭스 계정으로 로그인을 해야 해요. 또, 세 어플리케이션이 로그인을 처리하는 방식, 사용자 정보를 저장하는 방식 또한 각자 다를거에요.

without-sso-1

그런데! 만약 세 어플리케이션이 독립적으로 작동하기는 하지만 서로 연관된 무언가 가 있다고 상상해보세요. 예를들어 모두 같은 회사에서 제공하는 서비스라면? 만약 지메일, 구글 드라이브, 구글 행아웃에 대해 각자 다른 아이디로 로그인을 해야 한다면? 사용하려고 생각해봐도, 만드려고 상상만 해봐도 몸서리치게 불편하네요..

without-sso-2

  • 사용자 입장에서는 <아이디-비밀번호> 세 쌍을 기억해야 하죠.
  • 서비스를 만드는 입장에서는 로그인 화면 세 개, 데이터 베이스 세 개, 로그인 프로세스 세 개를 각자 구현 해야 합니다. 서비스끼리 데이터 싱크라도 구현 하려고 하면..;;

맞아요. 이렇게 되면 양쪽에게 다 불편하게 된 상황입니다.

SSO란 무엇인가

위에 기술한 것과 같은 불편을 해소할 수 있는 인증 방식이 SSO이고, Single Sign On의 약자입니다. 여러 서비스를 '로그인 한 번' 으로 이용하도록 하는 기술이에요. 각 어플리케이션에서 로그인/인증 부분만 떼어서 한 군데로 모아두는 방식입니다. 대략적인 그림을 일단 구경해주세요.

sso

SP는 Service Provider의 약자입니다. 제가 위에서 얘기해온 '서비스', '어플리케이션'을 SSO 용어로는 SP라고 부릅니다. '전체 인증 흐름에서 무슨 역할을 담당하는 요소인가'의 관점에서 provider라는 단어가 따라붙은게 아닐까 생각합니다. 가운데에 IdP가 새로 생겼어요. IdP는 Identity Provider의 약자로, 각 SP들의 인증 관련 부분만 모아서 구현 해 놓은 것이라고 생각하시면 됩니다. '구현 해 놓은 것'이라고 적었지만 IdP 자체도 하나의 웹 서비스죠.

SSO는 어떻게 동작하는가

이제 준비운동이 끝났습니다. 제 생각엔 이제 나오는 부분을 읽으셔야 비로소, SSO가 이런 거구나, 하고 감이 오실 것 같아요. SSO가 어떤 흐름으로 동작하는지 예시를 드리겠습니다. 물론 실제 구글에서의 로그인 처리 방식과는 상관 없는, 제 상상 속의 시나리오 입니다.

먼저 구글 드라이브를 사용하는 시나리오를 생각 해 볼게요.

  1. 사용자가 SP(구글 드라이브)를 사용하려 합니다.
  2. 사용자의 세션 정보가 SP에 남아있지 않아서, SP는 사용자를 IdP(구글 통합 로그인 페이지)로 redirect 시킵니다
  3. 사용자의 세션 정보가 IdP에 남아있지 않아서, 사용자는 IdP에서 로그인(또는 어떤 방식으로든 '인증') 합니다.
  4. 인증이 완료되면, IdP는 사용자를 SP로 다시 redirect 시키며, 동시에 사용자의 '인증 정보'를 SP에게 전달합니다.
  5. 로그인 처리가 완료 되어 구글 드라이브를 사용할 수 있습니다.

그리고 이 직후에, 지메일을 사용하면 사용자 흐름은 아래와 같을 거에요.

  1. 사용자가 SP(지메일)을 사용하려 합니다.
  2. 사용자의 세션 정보가 SP에 남아있지 않아서, SP는 사용자를 IdP로 redirect 시킵니다.
  3. 사용자의 세션 정보가 IdP에 남아있습니다! 그러면 IdP는 사용자를 SP로 다시 redirect 시키며, 동시에 사용자의 '인증 정보'를 SP에게 전달합니다.
  4. 로그인 처리가 완료 되어 지메일을 사용할 수 있습니다.

SSO를 어떻게 구현할까

SSO 시스템을 구현할 때의 가장 중요한 포인트는, 제 생각에, IdP에서 SP로 사용자 인증 정보 전달을 처리할 때 의 보안 입니다. 이 부분은 여러 표준, 프레임워크 등에 의해 구현할 수 있는데요, 그 중에 대표적으로 SAML, OAuth, JWT등이 있습니다. 이 부분에 대해서는 따로 포스팅을 할 계획입니다.

References


도무지 저를 시원하게 이해시키는 한글 포스팅을 찾을 수가 없어서, 제가 원하는 대로 직접 쓰게 되었습니다. 하지만 영어 자료는 정말 많아요. 구글 검색 바 하단에 설정 > 언어(Languages)를 꼭꼭 English로 해놓고 영어 검색하시면 더더더 잘나옵니다.

어려운 주제라서 잘못된 부분이 있을까봐, 다 써놓고 걱정되네요. 혹시나 발견하시면 꼭꼭 댓글 남겨주세요.

긴 글 읽어주셔서 감사해요.

代做工资流水公司宁波办贷款流水威海开离职证明福州办薪资流水单汕头工资流水代开中山银行流水电子版打印银川背调流水肇庆企业对公流水样本宿迁车贷流水开具盐城薪资银行流水费用扬州对公银行流水查询开封查询背调流水重庆做工资流水台州查询房贷流水大连公司流水多少钱深圳代开银行流水岳阳查房贷工资流水泰州做工作收入证明青岛做贷款流水洛阳转账流水打印镇江查工资证明九江个人工资流水 公司上海代开签证流水曲靖车贷工资流水珠海企业流水打印制作西宁房贷收入证明报价宜春制作工资流水长春房贷收入证明查询西安车贷工资流水 价格泰安流水单打印邢台查询企业对公流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化