1회 사용자 인증으로 다수의 애플리케이션 및 웹 사이트에 대한 사용자 로그인을 허용하는 인증 솔루션
한 번 자격 증명이 검증된 사용자에게는 반복되는 로그인 없이 모든 암호 리소스에 엑세스하여 보안과 사용자 경험 모두 충족한다.
SSO는 중앙의 신뢰할 수 있는 인증 서버를 사용하여 작동한다. 이 인증 서버는 사용자가 시스템에 최초로 로그인할 때 사용자의 신원을 확인하고, 이후 다른 시스템이나 서비스에 접근할 때는 인증 서버에서 발행한 토큰이나 티켓을 사용해 사용자의 신원을 자동으로 확인한다.

SSO 솔루션 구성 요소
SSO 서비스
사용자가 로그인할 때 애플리케이션이 사용하는 중앙 서비스
인증되지 않은 사용자가 애플리케이션에 대한 엑세스를 요청하는 경우 애플리케이션은 해당 사용자를 SSO 서비스로 리디렉션 한다. 이후 서비스가 사용자를 인증하고 원래 애플리케이션으로 리디렉션 한다.
SSO 토큰
사용자 이름 또는 전자 메일 주소와 같은 사용자 식별 정보를 포함하는 디지털 파일
사용자가 애플리케이션에 대한 엑세스를 요청하면 애플리케이션은 SSO 토큰을 SSO 서비스와 교환하여 사용자를 인증한다.
SSO 프로세스
1. 사용자가 애플리케이션에 로그인하면 앱은 SSO 토큰을 생성하고 인증 요청을 SSO 서비스로 보냄
2. SSO 서비스가 사용자가 이전에 시스템에서 인증되었는지 확인하여 인증된 경우 애플리케이션에 인증 확인 응답을 전송하여 사용자에게 엑세스 권한을 부여한다.
3. 사용자에게 유효한 보안 인증 정보가 없는 경우 SSO 서비스는 상요자를 중앙 로그인 시스템에 리디렉션 하고 사용자에게 사용자 이름과 암호를 제출하라는 메시지를 표시한다.
4. 사용자가 정보를 제출하면 이 서비스는 사용자 보안 인증 정보를 확인하고 긍정적인 응답을 애플리케이션으로 보낸다.
5. 그렇지 않으면 오류 메시지가 표시되고 보안 인증 정보를 다시 입력해야 한다. 로그인 시도가 여러 번 실패하면 서비스에서 사용자가 일정 기간 동안 더 이상 시도하지 못하도록 차단할 수 있다.
암호 보안 강화
SSO를 사용하지 않으면 여러 웹 사이트에 대해 단순한 암호를 사용하여, 로그인 시 보안 인증 정보를 잊어릴 수 있다.
SSO는 암호로 인한 번거로움을 방지하고 사용자가 여러 웹 사이트에 사용할 수 있는 강력한 비밀번호를 만들게 한다.
생산성 향상
모든 애플리케이션에 대해 사용자 이름과 암호를 수동으로 입력하는 것은 시간이 많이 걸리고 생산성이 저하된다.
SSO는 엔터프라이즈 애플리케이션의 사용자 검증 프로세스를 간소화하고 보호된 리소스에 더 쉽게 엑세스할 수 있도록 지원한다.
보안 태세 개선
SSO는 사용자 당 비밀번호 수를 최소화 하여 사용자 엑세스 감사를 용이하게 하고 모든 유형의 데이터에 대한 강력한 엑세스 제어를 제공한다.
암호를 대상으로 하는 보안 이벤트의 위험을 줄이는 동시에 조직이 데이터 보안 규정을 준수할 수 있다.
중앙 집중화된 리스크
SSO 시스템은 중요한 인프라가 되며, 만약 인증 서버가 공격을 받거나 다운되면, 연결된 모든 서비스에 대한 접근이 중단될 수 있다.
프라이버시 문제
사용자의 인증 정보가 많은 애플리케이션과 공유되기 때문에, 어느 정도의 프라이버시 침해가 발생할 수 있다.
SAML(Security Assertion Markup Language)
애플리케이션이 SSO 서비스와 인증 정보를 교환하는 데 사용하는 프로토콜 또는 규칙 집합
XML을 기반으로 사용자 식별 데이터를 서비스 제공자와 신원 제공자 간 교환한다.
애플리케이션이 사용자 보안 인증 정보를 시스템에 저장할 필요가 없으므로 더 나은 보안과 유연성을 제공한다.
주로 엔터프라이즈 환경에서 사용되며, 사용자는 하나의 로그인으로 여러 시스템과 서비스에 접근할 수 있다.
강력한 인증 옵션과 보안성을 제공하지만, 구현이 복잡하고 XML 기반의 데이터 처리가 무겁다.
OAuth(Open Authorization)
애플리케이션이 암호를 제공하지 않고도 타 웹 사이트 사용자 정보에 안전하게 엑세스 하도록 하는 개방형 표준
애플리케이션은 사용자 암호를 요청하는 대신 OAuth를 사용하여 암호로 보호된 데이터에 액세스할 수 있는 사용자 권한을 얻는다.
API를 통해 애플리케이션 간 신뢰 관계를 설정하며, 애플리케이션은 이를 통해 설정된 프레임워크에서 인증 요청을 보내고 응답할 수 있다.
매우 우연하며 다양한 타입의 애플리케이션에 적용 가능하지만, 오직 권한 부여에만 초점을 맞추며, 실제 인증은 다른 방식으로 처리해야 한다.
OIDC(OpenID Connect)
단일 사용자 보안 인증 정보 세트를 사용하려 여러 사이트에 엑세스 하는 방법
OAuth기반으로 한 인증 레이어로, 클라이언트가 사용자의 신원을 확인할 수 있게 해준다.
웹 애플리케이션은 인증 토큰을 서드 파티 ID 공급자에게 전달하는 대신, OIDC를 사용하여 추가 정보를 요청하고 사용자의 신뢰성을 검증한다.
OAuth2.0의 유연성과 결합되어 광범위하게 사용되지만, 보안 설정이 적절히 관리되지 않을 경우 취약점이 생길 수 있다.
Kerberos
둘 이상의 당사자가 네트워크에서 신원을 서로 검증할 수 있는 티켓 기반 인증 시스템
주로 내부 네트워크 및 엔터프라이즈 환경에서 사용하여, 네트워크 보안 서비스에서 클라이언트와 서버 간의 상호 인증을 제공한다.
보안 암호화를 사용하여 서버, 클라이언트 및 키 배포 센터 간 전송되는 식별 정보에 대한 무단 엑세스를 방지한다.
중앙집중적 인증 서비스를 통해 네트워크 내 다양한 서비스 접근을 안전하게 관리하지만, 구성과 관리가 복잡하며 네트워크 외부에서는 사용이 제한적이다.
참고
SSO(Single Sign On)란 무엇인가요?
[개념] SSO(Single Sign-On) 이란?
[Security] SSO 개념 (SAML, OAuth, OIDC)