본문 바로가기
Dev Story 💻/CS

통합인증, SSO (Single Sign-On)에 대하여

by 몽테 2022. 8. 27.
반응형


SSO (Single Sign-On)는 무엇인가?

 User는 일반적으로 서로 다른 웹 사이트와 응용 프로그램에 액세스하기 위해 여러개의 ID와 Password를 기억하는 것이 번거롭다고 생각한다.

 예를 들어 5개의 서랍이 달린 서랍장에 각각의 서랍에 잠금장치가 달려있고, 각각의 서랍을 열기 위해 서로다른 열쇠가 필요하다면, 이용자는 5개의 서로다른 열쇠를 갖고 있어야 하며, 각각의 위치에 맞는 열쇠를 찾아 서랍을 이용해야 한다.

SSO는 5개의 서랍을 한개의 열쇠로 이용할 수 있게 만들어주는 중앙화된 세션 및 사용자 인증 기능이라고 생각하면 편하다. 즉, SSO를 사용하면 User가 한가지의 ID, Password를 사용하여 여러 리소스에 액세스할 수 있으므로 다수의 ID와 Password가 필요하지 않게 된다.

 지정된 플랫폼 하나에서 인증되면 이후 매번 로그인과 로그아웃을 반복할 필요없이 다양한 서비스를 사용할 수 있다.
일반적으로 SSO를 사용하는 조직은 신뢰할 수 있는 Third party에게 의존하여 인증을 수행하게 된다.

 

SSO가 아닌 경우

 

https://www.manageengine.com/products/self-service-password/what-is-single-sign-on-and-how-sso-works.html

SSO가 없는 경우 User는 이용하고자 하는 서비스에 대한 각각의 ID와 Password를 기억해야하고 각각 로그인을 해야 서비스를 이용할 수 있다.

 서비스 제공업체는 각각의 서비스의 갯수만큼 로그인 로직과 DB를 구현하고 유지해야한다.

SSO가 절대적 만능은 아니지만, 위와 같은 상황은 사용자에게도 서비스 제공업체에게도 서로 불편한 상황인 것은 확실하다.

 

SSO를 이용한 경우

https://www.manageengine.com/products/self-service-password/what-is-single-sign-on-and-how-sso-works.html

 

SSO가 어떻게 작동하는지 이해하기 위해서는 사용자 인증(User Authentication)을 수행하는 시스템인 IdP(Identify Provider)와 사용자가 액세스할 애플리케이션 또는 웹사이트인 SP(Service Provider)의 역할을 이해해야 한다.

  • SP (Service Provider) : 서비스 제공업체에서 제공하는 서비스나, 웹사이트, 어플리케이션
  • IdP (Identify Provider) : ID공급업체, SSO 플랫폼, SP들의 인증 관련 부분만 모아서 구현 해 놓은 시스템

SSO를 구현하는 것에 대한 표준은 여러가지가 있지만, 공통적인 핵심은 SP의 사용자 인증에 대한 책임을 IdP로 넘길 수 있게 해준다는 것에 있다. 그렇기 때문에 SP와 IdP 사이에 신뢰 관계가 설정된 경우에만 SP와 IdP 간에 SSO를 사용할 수 있다.

간단하게 설명하자면, 각각의 서비스에서 각각의 ID와 Password로 번거롭게 로그인을 하던 것을, SSO를 사용하여(각각의 서비스 로그인에 대한 책임을 IdP라는 것에 전부 이행 시킴) 한개의 ID와 Password로 로그인을 가능하게 해주는 것이다. 

 

 사용자가 하나의 서비스에 접근하기 위해 로그인을 시도하면 SP는 IdP와 토큰을 이용해 통신을 하여, 사용자가 입력한 사용자 인증이 완료되었는지 확인한다.

  • 토큰 : 당사자 간 상호 신뢰를 위해 디지털 서명되는 작은 크기의 구조화된 정보 모음

IdP는 사용자에게 로그인을 요청할 수도 있고, 사용자가 최근에 로그인한 적이 있다면 다시 요청하지 않고 SP에게 최근에 로그인했음을 알릴 수도 있다.

 

SSO가 작동하는 과정

  • 사용자가 액세스하려는 SP로 이동한다.
  • SP는 사용자 정보를 포함하는 토큰을 IdP로 전송하여 사용자 인증을 요청한다.
  • 사용자가 이전에 인증된 경우에는 IdP는 응용프로그램에 대한 액세스 권한을 부여한다.
  • 사용자가 이전에 인증되지 않은 경우에는 IdP에서 로그인 화면을 보여주어 인증정보를 입력해야 한다.
  • IdP는 사용자의 인증정보를 확인하고 인증 데이터를 SP에 전달하여 인증이 성공했음을 확인한다.
  • 인증 데이터는 사용자의 브라우저를 통해 SP로 토큰 형태로 전달되며, 사용자는 인증에 성공하면 액세스 권한이 부여된다.
  • 전달된 토큰은 SP와 IdP 간에 설정된 신뢰 관계에 따라 유효성이 검증된다.
  • 로그인하면 사용자의 인증 확인 데이터가 SP의 페이지를 따라 토큰으로 전달되므로 반복적으로 인증할 필요가 없다.
  • 동일한 사용자가 다른 신뢰할 수 있는 리소스에 액세스하려고 하면 새 리소스는 IdP를 사용하여 사용자의 ID만 확인한다. 사용자가 이미 인증되었으며 IdP는 사용자의 ID를 확인했기 때문에 추가 로그인이 필요하지 않다.

 

SSO 표준 프로토콜 종류

SSO는 OAuth, WS-Federation, OpenID 및 SAML과 같은 표준 프로토콜을 사용하여 토큰을 전달한다

  • SAML (Security Assertion Markup Language, 샘엘) : 보안 검증 마크업 언어, SP와 IdP 간의 인증(Authentication)  인가(Authorization) 데이터를 교환하기 위한 XML 기반의 개방형 표준 데이터 포맷.
  • OAuth (Open Authorization) : 인가(Authorization)을 위한 개방형 표준 프로토콜이며, Third-Party에게 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공한다. SAML과  다르게 XML기반이 아닌 JSON기반이며,  인가(Authorization)가 주요 목적으로 설계되어있다. 
  • OpenID : 권한 허가 프로토콜인 OAuth2.0를 이용하여 만들어진 인증 레이어. 인증(Authentication)이 주요 목적으로 설계되었다. 주로 OAuth와 함께 사용된다. JWT(JSON Web Token) 형식의 ID Token을 사용한다.
  •  
  • OpenID를 사용하는 경우 사용자의 암호는 사용자를 인증하고 권한을 부여하는 데만 중계 당사자인 제3자에 의해 사용됩니다. 인증되면 사용자는 모든 응용 프로그램과 자격 증명을 공유할 필요 없이 여러 응용 프로그램에 액세스할 수 있습니다. 사용자 정보는 ID Token(JWT, JSON Web Token형식)으로 전달됩니다
인증 (Authentication) : 내가 누구인가?
인가 (Authorization) : 나의 권한은 무엇인가?

 


Reference

https://www.manageengine.com/products/self-service-password/what-is-single-sign-on-and-how-sso-works.html
https://it-ist.tistory.com/251
https://www.itworld.co.kr/howto/193849
반응형

'Dev Story 💻 > CS' 카테고리의 다른 글

RAID의 구조에 대하여  (0) 2022.08.28

댓글