[ SSO ] SSO(Single Sign-On)에 대해서

duck-ach·2023년 2월 16일
0

Security

목록 보기
3/5

SSO란?

SSO(Single Sign-On) 은 1회의 사용자 인증으로 여러개의 애플리케이션 및 웹사이트에 대한 사용자 로그인을 허용하는 인증 솔루션이다.

SSO의 발단
만약 회사에서 접근해야 하는 사이트가 50개 있다고 생각해보자.
보안상 매번 로그인이 풀려있기라도 한다면, 일을 하면서 매번 사이트마다 로그인 하는데에만 시간을 다 보내게 될 것이다.

이때 조직에서는 보안편의성, 신속성 등을 모두 챙기기위하여 Access Management Strategy(접근 관리 전략)에 우선순위를 둔다.

SSO(Single Sign-On)는 한 번 자격증명이 검증된 사용제에게는 반복되는 로그인 없이 모든 암호 보호 리소스에 액세스 하도록하여 보안과 사용자 경험을 모두 충족할 수 있다.

SSO의 장점

암호 보안 강화

만약 SSO를 사용하지 않을 때는 각 사이트마다 규제가 달라서 아이디나 비밀번호 형식도 다를테고, 보안상의 이유로 한가지로 하지 않을 때도 있다.

SSO는 암호로 인한 번거로움을 방지하고 사용자가 여러 웹 사이트에 사용할 수 있는 강력한 비밀번호를 만들도록 권장한다.

생산성 향상

여러 웹 사이트에 한번의 인증만으로 프로세스를 간소화하고 보호된 리소스에 더 쉽게 액세스 할 수 있으므로 생산성이 향상된다.

비용 절감

SSO를 사용하지 않을 때는 각 사이트마다 아이디와 비밀번호가 달라서 사용자가 아이디/비밀번호를 잊어버리게 된다면, 빈번하게 아이디/비밀번호 변경 작업이 이루어질 것이다. 그렇게 된다면 변경요청이 빈번하게 발생하여 사내 IT팀의 작업 부하가 증가한다.

SSO를 구현하면 암호를 잊어버리는 일이 줄어들어 암호 재설정 요청을 처리할 때 지원 리소스를 최소화할 수 있다.

SSO 구성요소

  1. 사용자 통합 로그인 : 사용자 통합 로그인 시스템에 대한 정보 관리
  2. 인증 서버 : 인증서버 시스템에 대한 정보 관리
  3. 통합 에이전트 : 각 정보 시스템에 대한 정보 관리
  4. LDAP(Lightweight Directory Access Protocol) : 네트워크 상의 자원을 식별하고 인가된 사용자만 접근하도록 하는 Network Directory Service

SSO 작동원리

  1. 사용자가 애플리케이션에 로그인하면 앱은 SSO Token을 생성하고, 인증 요청을 SSO 서비스로 보낸다.
  2. SSO Token은 사용자가 이전에 시스템에서 인증되었는지 확인한다. 인증된 경우, 애플리케이션에 인증 확인 응답을 전송하여 사용자에게 액세스 권한을 부여한다.
  3. 사용자에게 유효한 보안 인증 정보가 없는 경우 SSO Service는 사용자를 중앙 로그인 시스템으로 Redirection 한다.
  4. 사용자가 정보를 제출하면 SSO Service가 보안 인증 정보를 확인하고 응답을 애플리케이션으로 보낸다.
    성공 : 원래 애플리케이션으로 Redirection
    실패 : 오류메시지를 표시하며 보안 인증 정보를 다시 입력하도록 한다. (로그인 시도가 여러번 실패할 경우 SSO Service 에서 사용자가 일정 기간 동안 더 이상 시도하지 못하도록 차단할 수 있다.)

SSO Service

  • SSO 서비스는 사용자가 로그인할 때 애플리케이션이 사용하는 중앙 서비스이다.
  • 인증되지 않은 사용자가 애플리케이션에 대한 Access를 요청하는 경우 해당 사용자를 SSO 서비스로 Redirection 한다.
  • 서비스가 사용자를 인증하면 원래 애플리케이션으로 Redirection 한다.

이 서비스는 일반적으로 전용 SSO policy server에서 실행됩니다.

SSO Token

  • 사용자 이름 또는 전자 메일 주소와 같은 사용자 식별 정보를 포함하는 디지털 파일
  • 사용자가 애플리케이션에 대한 액세스를 요청하면 애플리케이션은 SSO토큰을 SSO 서비스와 교환하여 사용자를 인증한다.

SSO 구조

1. 인증 대행 모델(Delegation)

  • 인증 방식을 변경하기 어려울 경우 많이 사용
  • 시스템 접근 시 통합 에이전트가 인증 작업을 대행한다.

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

  • 웹 기반의 시스템에 주로 사용한다.
  • 미리 인증된 토큰(Cookie 기능)을 받아서 각 시스템 접근 시 자동으로 전달한다.

SSO 유형

SSO가 사용자 보안 인증 정보를 검증하고 인증하는 데 사용하는 다양한 표준 및 프로토콜이 있다.

우리는 여행을 갈 때 여권을 통해 신원확인을 간편하게 한다. 인터넷에서도 개인 신원 확인을 손쉽게 하기 위해 일일이 회원가입을 거치지않고 본인 인증을 손쉽게 할 수 있게 발전하고 있다.

위와 같은 서비스는 IDP(Identity Provider) 라고 불리는 신원 확인 서비스가 제공한다.

SAML(Security Assertion Markup Language)

  • 애플리케이션이 SSO 서비스와 인증 정보를 교환하는 데 사용하는 프로토콜 또는 규칙 집합이다.
  • 브라우저 친화적인 마크업 언어인 XML을 사용하여 사용자 식별 데이터를 교환한다.
  • SAML 기반 SSO 서비스는 애플리케이션이 사용자 보안 인증 정보를 시스템에 저장할 필요가 없으므로 더 나은 보안과 유연성을 제공한다.

OAuth(Open Authorization)

(velog 로그인 화면)

  • 애플리케이션이 암호를 제공하지 않더라도 다른 웹 사이트의 사용자 정보에 안전하게 액세스 할 수 있도록 하는 개방형 표준이다.
  • OAuth는 API를 통해 애플리케이션 간의 신뢰 관계를 설정하며, 애플리케이션은 이를 통해 설정된 프레임워크에서 인증 요청을 보내고 응답할 수 있다.

OIDC(Open ID Connect)

  • 단일 사용자 보안 인증 정보 세트를 사용하여 여러 사이트에 액세스 하는 방법이다.
  • 웹 애플리케이션은 인증 토큰을 Third-party ID Provider에게 전달하는 대신, OIDC를 사용하여 추가 정보를 요청하고 사용자의 신뢰성을 검증한다.

Kerberos

  • 둘 이상의 당사자가 네트워크에서 신원을 서로 검증할 수 있는 티켓 기반 인증 시스템이다.
  • 보안 암호화를 사용하여 서버, 클라이언트 및 키 배포 센터 간에 전송되는 식별 정보에 대한 무단 액세스를 방지한다.
profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글