[Server] 서버 인증 이해하기-2부 (SSO)

최근 많은 기업들이 그룹화되고 대형화되면서 여러 사이트들을 통합 관리하게 되면서 SSO를 사용하고 있다. 통합인증 SSO를 사용하게 되면, 개인의 경우 사이트에 접속하기 위해 아이디와 패스워드 등 개인 정보를 각 사이트마다 일일이 기록해야 하던 번거로움을 한 번의 작업으로 해소할 수 있고, 기업에서는 회우너에 대한 통합 관리가 가능하여 마케팅을 극대화할 수 있다. 베스핀글로벌은 분리되어있던 다양한 사내 Application을 통합 관리하기 위해 Okta 서비스를 활용하고 있다. 이렇게 기업 내/외부의 다양한 서비스를 제공하는 기업에서 도입하여 활용하는 통합인증 SSO에 대해 알아보자.


SSO

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


구축유형

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

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

– 권한을 얻으려는 서비스의 인증 방식을 변경하기 어려울 경우 사용한다.

– 대상 서비스의 인증방식 자체를 변경하지 않고, SSO Agent 가 사용자 인증 정보를 관리하며 대신 로그인해주는 방식이다.

– 만약 Target Service에 로그인하기 위한 정보가 admin/passwd라면, Agent가 해당 정보를 가지고 있고 로그인할 때 유저대신 Target Service에 사용자 정보를 전달해 로그인한다.

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

– 웹 기반의 시스템에 주로 사용한다.

– 통합 인증을 수행하는 곳에서 인증을 받아 ‘인증 토큰’을 발급 받는다.

– 유저가 서비스에 접근할 때 발급받은 토큰을 서비스에 같이 전달하게 되고, 서비스는 토큰정보를 통해 사용자를 인식할 수 있다.


SSO의 장점

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

– 다른 아이디와 암호 조합으로 인한 수고로움을 줄인다.

– 같은 아이디마다 암호를 재입력하는 시간을 줄인다.

– 암호를 재발급해주어야 하는 헬프데스크 비용을 줄인다.


SSO의 단점

– 한 번의 인증으로 많은 정보를 제공하기 때문에 해킹의 피해가 늘어날 수 있다.

– 아이디의 접속 권한을 잃어버리면 모든 서비스를 사용할 수 없다.

– 각각의 서비스마다 보안 수준이 다르면 보안에 문제가 생길 수 있다.


SSO를 구현하기 위한 기술요소

– 인증: PKI(Public Key Infra structure), 생체 인식, OTP(One Time Password)

– 관리: LDAP(Lightweight Directory Access Protocol), AD(Active Directory), 쿠키(Cookie), 토큰(Token)

– 암호화 통신: SSL(Secure Socket Layer), IPSec(IP Security Protocol)


Token을 이용한 SSO 구현

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

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

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


마치며

SSO 인증 정보 전달 모델의 flow를 보면 인증 토큰이라는 개념이 나온다. 대표적인 기술로 JWT(JSON Web Token)이 있다. 토큰 개념은 마지막 시리즈에서 한 번 정리하도록 하겠다.

SSO를 사용하는 대형 기업에서는 하나의 계정으로 모든 서비스를 이용할 수 있다. 예를들어 카카오톡, 카카오 T, 카카오맵의 DB는 각각 분리되어 있는데 어떻게 회원을 공유할 수 있을까? 이와 같은 의문증에 대한 해결을 위해, 다음 편에서는 OAuth2.0에 대해서 알아보도록 하자.


출처

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=wnrjsxo&logNo=221731488194

https://devbksheen.tistory.com/entry/SSOSingle-Sign-On?category=1023004

https://toma0912.tistory.com/75

https://brunch.co.kr/@sangjinkang/36

https://it-ist.tistory.com/251

Leave a Comment