Single Sign On 정리

SSO와 관련 프로토콜에 대하여

By Hong

SSO

Single Sign On 서비스를 이용함으로써 유저는 여러번 로그인 처리를 할 필요없이, 한 번의 인증으로 여러 리소스에 접근할 수 있기 때문에 편리하다.

하지만 반대로 말하면 한 번 인증정보를 해킹당하게 되면 모든 리소스의 접근을 허용하는 꼴이 되고 만다.

이번 포스팅에서는 SSO의 종류들과 특징들에 대해서 정리했다.

LDAP

LDAP은 Light Directory Access Protocol의 약자로 디렉토리 서비스들은 이 프로토콜을 기본으로하여 서비스를 제공한다.

디렉토리 서비스란 하나의 집중된 관리 시스템에서 한 조직의 모든 subject와 object의 정보를 관리하는 것을 말한다.

대표적인 예로는 마이크로소프트의 Active Directory Domain Service를 들 수 있다. 관리 시스템의 디렉토리안에 조직의 다양한 정보들이 놓여있다.

인증을 통해서 접근을 하더라도 권한에 따라 열람이 가능한 정보들이 달라진다.

PKI (Public Key Infrastructure)도 디지털 인증서를 전송할 때 LDAP 프로토콜은 이용한다.

Kerberos

티켓 서비스를 이용하여 인증하는 메커니즘. Kerberos도 SSO을 제공한다.

티켓을 이용한 인증 방법에는 몇가지 기능들이 존재한다.

  • KDC (Key Distribution Center): 인증 서비스를 담당하는 신뢰받는 제3자. 모든 클라이언트와 서버는 KDC에 등록되어 관리된다. 인증에는 대칭키 (AES)를 이용한다.
  • Kerberos Authentication Server: KDC의 ticket granting service(TGS)와 authentication service(AS)를 제공하는 서버.
  • Ticket-Granting Ticket(TGT): KDC에서 인증이 되면 그 증거로 이 티켓을 받게된다. 이 티켓으로 원하는 정보에 접근하기위한 티켓을 신청하게 된다 (또 다시). TGT는 대칭키, 유효시간, 유저의 IP정보를 암호화하여 포함하고 있다.
  • Ticket 혹은 Service ticket. 인증을 마친 후 열람을 위한 티켓을 신청한 후 받게되는 티켓. 이 티켓이 있어야 정보에 접근이 가능하다.

Kerberos의 프로세스를 정리하면 다음과 같다.

kerberos

아래는 이미지와는 별개의 설명.

로그인 과정

  1. 유저 ID / PW를 입력
  2. 유저이름을 암호화하여 KDC에 전송
  3. KDC가 데이터베이스를 조회하여 유저이름 확인
  4. KDC가 서버와 클라이언트에서 사용될 대칭키 생성 (유저의 해쉬된 비밀번호를 이용). 이때 만료기간이 들어있는 TGT 생성.
  5. TGT를 클라이언트에 전송.
  6. 클라이언트가 TGT 이용. 해쉬된 비밀번호를 사용해서 대칭키를 디크립트.

원하는 리소스에 접근하기 위한 티켓

  1. 클라이언트가 TGT를 KDC에 보내면서 원하는 리소스에 접근을 요청 (TGT가 곧 신분증 같은 것).
  2. KDC가 TGT를 확인 후 리소스에 대한 권한을 조회함
  3. 권한이 있으면 서비스 티켓을 발급 후 클라이언트에 전송.
  4. 클라이언트는 KDC에서 발급받은 이 티켓(허가증)을 리소스를 호스팅하고 있는 서버에 보여줌.
  5. 서버에서 서비스 티켓을 확인
  6. 확인되고 나면 서버와 클라이언트의 통신이 시작됨

즉 KDC가 서버와 클라이언트의 가운데 껴서 인증절차를 담당하는 이미지 (보증인 같은 존재).

Federated Identity Management (FIM)

지금까지는 한 조직의 SSO의 방법이었지만 FIM은 한 조직을 넘어 다른 조직과의 SSO를 제공한다.

하지만 이 경우 넘어야 할 산이 하나 있으니, 서로 다른 조직들간의 공통적으로 사용할 언어가 필요하다는 것이다.

조직들간에 사용하는 운영체제가 다를 수도 있기 때문이다.

이때 등장하는 것이 SAML (Security Assertion Markup Language). 연합된 조직들끼리 authentication, authorization정보를 교환할 때 SAML형식을 이용한다.

그밖에도 조직들 연합에서 사용하는 인증방법으로 OAuth, OpenID라는 것이 있는데 간단히 보면 다음과 같다.

  • OAuth: 어떤 웹사이트에 접속할 때 트위터나 네이버, 카톡같이 이미 이용중인 다른 서비스로 인증하는 방법. 웹서핑하다보면 자주 보는 방식. Authorization에 이용.
  • OpenID: 제 3자가 제공하는 credential을 가지고 여러 서비스에 인증으로 사용하는 방법. Authentication에 이용.
Share: X (Twitter) Facebook LinkedIn