sol 개발 블로그 로고
Published on

SSO, 인증의 통합

Authors
  • avatar
    Name
    Chan Sol OH
    Twitter

목차

인증과 인가에 대한 정리

로그인을 하는 이유는 보안이 필요한 자원에 어떤 유저가 접근할 때, 접근할 권한이 있는지 확인하는 것 유저의 권한을 확인하기 위해선 아래와 같이 두가지 단계를 거쳐야한다.

  1. 유저가 서비스에 등록된 사람인지 확인 (인증)
    • 유저가 우리 서비스에 등록조차되지 않았다면, 유저의 권한은 알 수 없기 때문
  2. 유저가 요청한 작업이 유저의 권한 범위 안에 있는지 확인 (인가)
    • 유저가 할 수 있는 범위 밖의 작업을 하려고하면 막아야한다. 예를 들어 다른 사람의 계좌번호를 바꾸는 행위

위와 같은 단계로 서비스에 접근한 유저를 인증하고 유저의 요청에대해 인가를 통해 서비스를 제공해야한다. 즉, 인가 전에는 인증을 수행해야하는 것이다. 이렇듯 인증은 유저가 어떤 사람인지를 알 수 있는 가장 기초적인 작업이다.

스마트폰 등장 이래로 많은 서비스가 등장했고, 그 서비스들은 보통 ID/PW의 조합 같은 Credential을 입력해서 로그인(인증)을 진행한다. 각 서비스마다 다른 Credential을 입력하게 되며 사용자는 로그인을 계속해야하는 불편함이 존재한다.

또한, 서비스 제공자는 사용자가 회원가입할 때 사용자를 완전히 신뢰하기 위해서 주민등록번호나 휴대전화 인증 같이 불편한 정보를 가지고 안전하게 관리해야한다. 만약 보안사고라도 발생하면 사용자의 민감 정보가 유출될 수 있다.

위와 같은 불편함을 보안하기 위해 하나의 인증 업체가 인증을 수행하고 나머지 서비스 제공자는 인증된 정보를 받아서 사용하는 방식이 필수적인 방법론으로 자리잡았다.

SSO, 인증 통합의 시작

SSO는 한 인증 업체가 인증을 담당하고 다른 서비스 제공자는 그 인증 정보를 바탕으로 사용자를 인가하는 3가지 절차를 의미한다. Identity Provider의 인증서를 가지고 여러 서비스에 등록할 수 있기 때문에 SSO는 Authentication(인증)을 위한 절차이다.

  1. SAR (SAML Authenticaion Request) : 인증서 요청서
  2. SAML (Security Assertion Markup Language) : 비대칭키로 암호화된 인증서
  3. SAML 검증 : SAML을 Public Key로 복호화 및 검증

SAML의 동작 과정

SAML에서는 3가지의 주체가 등장한다.

  1. User : 서비스를 사용하고자하는 주체
  2. Service Provider : 서비스를 User에게 제공하고 싶지만, User를 인증해야하는 주체
  3. Identity Provider : Service Provider에게 인증 작업을 위임 받은 인증 업체
How Does SAML Work https://wiki.deepnetsecurity.com/display/DualShield6/How+SAML+Works
  1. User가 Service Provider에게 서비스를 요청하면,
  2. Service Provider는 User의 인증을 위해 SAR을 위한 페이지로 User를 redirect한다.
  3. User는 redirect된 페이지에서 Credentials를 입력하고
  4. Identity Provider는 받은 Credentials를 내부적으로 검증요청해서,
  5. Identity Provider는 검증 결과를 User DB로부터 받는다.
  6. 검증됐다면, Identity Provider는 Service Provider에게 SAML response를 보낸다.
  7. Service Provider는 SAML을 검증학 유저 인증을 완료한다.

위와 같은 과정에서 Service Provider는 유저의 Credentials를 볼 일이 없고, 손쉽게 유저를 인증할 수 있는 장점이 있다.