서버의 인증, SSO란?

1 minute read


SSO

통합인증(Single Sign-On; SSO)은 한 번의 인증 과정으로 여러 컴퓨터 상의 자원을 이용 가능하게 하는 인증 기능이다. 인증은 하나의 인증서버에서 수행하고, 그 인증 서버가 서비스를 담당하는 타겟 서버에 인증 정보를 알려주는 방식이다. 주로 다양한 서비스를 유사한 도메인 또는 동일한 탑 레벨 도메인(Top Level Domain; TLD)을 서비스하는 엔터프라이즈 서비스 제공자가 사용자에게 간편한 로그인을 제공하기 위해 사용한다.

SSO

예를 들어, 구글이 제공하는 서비스들이 위와 같이 4개가 있다고 치자.

  • Gmail
  • Youtube
  • Calendar
  • Drive

여러분들이 구글의 각 서비스를 이용할 때마다 각기 다른(또는 같은) 인증 정보(ID, PASSWORD 등)을 통해 가입하고 이용하려면 얼마나 복잡한가? 어딘가에 내가 가입한 정보를 따로 메모해둬야할지도 모르겠다.

하지만 여러분은 구글에서 한번 로그인하게 되면, 구글의 나머지 서비스를 모두 로그인 없이 이용할 수 있게 된다. 바로 SSO 때문이다.

구축유형

서비스의 특성에 따라 두가지 모델을 혼용하여 전체 시스템의 SSO를 구성할 수 있다고 한다.

1. 인증 대행 모델(Delegation Model)

  • 권한을 얻으려는 서비스의 인증 방식을 변경하기 어려울 경우 사용한다.
  • 대상 서비스의 인증방식 자체를 변경하지 않고, SSO Agent 가 사용자 인증 정보를 관리하며 대신 로그인해주는 방식이다.

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

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

장단점

SSO의 장점

인증 절차를 거치지 않고도 1개의 계정만으로 다양한 시스템 및 서비스에 접속할 수 있어 사용자의 편의성 향강과 관리비용 절감 효과가 있다.

  • 다른 아이디와 암호 조합으로 인한 수고로움을 줄인다.
  • 같은 아이디마다 암호를 재입력하는 시간을 줄인다.
  • 암호를 재발급해주어야 하는 헬프데스크 비용을 줄인다.

SSO의 단점

  • 한 번의 인증으로 많은 정보를 제공하기 때문에 해킹의 피해가 늘어날 수 있다.
  • 아이디의 접속 권한을 잃어버리면 모든 서비스를 사용할 수 없다.
  • 각각의 서비스마다 보안 수준이 다르면 보안에 문제가 생길 수 있다.

Token을 이용한 SSO 구현

기존에 웹 개발에서는 로그인 시 웹 서버로부터 Session ID를 쿠키로 받아, 그 쿠키를 로그인의 증거로 사용하였다. 매번 요청마다 서버가 Session 정보를 확인해야하는 부담, 서버가 Session 정보를 DB나 Redis 등에 저장해야하는 복잡한 구현 방식이 단점이었다.

이에 반해 토큰 방식은 Session 방식과 달리 서버가 각각 로그인한 사용자의 세션 정보를 따로 보관하지 않는다. 한 번 인증 토큰이 클라이언트에 발급되면 추후 요청부터 클라이언트는 그 토큰을 포함하고, 서버가 클라이언트의 요청에 포함된 토큰을 그떄그때 확인하는 방식이다.

초기의 SSO는 상용 서비스에서 제공하는 SAML(Security Assertion Markup Language)방식을 사용하였다. SAML은 XML 형태의 마크업으로, 간단한 정보 전달을 위해 많은 태그가 사용되는 비효율성이 있다. 그 이후부터 SSO에서도 토큰을 사용하고 있다.

https://blog.bespinglobal.com/post/server-%ec%84%9c%eb%b2%84-%ec%9d%b8%ec%a6%9d-%ec%9d%b4%ed%95%b4%ed%95%98%ea%b8%b0-2%eb%b6%80-sso/

[출처] : blog.bespinglobal.com

Leave a comment