1.6. SSO(Single Sign-On)

SSO(Single Sign-On)를 사용하면 한 리소스에 인증된 주체가 다른 리소스에 대한 액세스를 암시적으로 인증할 수 있습니다. SSO에서 별도의 리소스 집합을 보호하는 경우 사용자는 보안 리소스에 처음 액세스할 때만 인증해야 합니다. 인증에 성공하면 사용자와 연결된 역할은 저장되어 기타 모든 관련 리소스의 권한 부여에 사용됩니다. 이를 통해 사용자는 인증 없이 추가 인증 리소스에 액세스할 수 있습니다.

사용자가 리소스에서 로그아웃하거나 리소스가 프로그래밍 방식으로 세션을 무효화하면 지속되는 모든 권한 부여 데이터가 제거되고 프로세스가 다시 시작됩니다. 리소스 세션 시간 초과의 경우 해당 사용자와 연결된 다른 유효한 리소스 세션이 있는 경우 SSO 세션이 무효화되지 않습니다. SSO는 웹 애플리케이션 및 데스크탑 애플리케이션에서 인증 및 권한 부여에 사용할 수 있습니다. 경우에 따라 SSO 구현이 두 가지와 통합될 수 있습니다.

SSO 내에는 시스템의 다른 개념과 일부를 설명하는 데 사용되는 몇 가지 일반적인 용어가 있습니다.

IdM (Identity Management)

ID 관리(IDM)는 하나 이상의 시스템 또는 도메인에서 주체 및 관련 인증, 권한 및 권한을 관리하는 개념을 나타냅니다. IAM(ID 및 액세스 관리)이라는 용어는 이와 같은 개념을 설명하는 데 사용됩니다.

ID 공급자

ID 공급자(IDP)는 최종 사용자를 인증하고 해당 사용자의 ID를 신뢰할 수 있는 파트너에게 어설션하는 권한 있는 엔터티입니다.

ID 저장소

ID 프로바이더는 인증 및 권한 부여 프로세스 중에 사용할 사용자의 정보를 검색하려면 ID 저장소가 필요합니다. ID 저장소는 데이터베이스, LDAP(Lightweight Directory Access Protocol), 속성 파일 등 모든 유형의 리포지토리가 될 수 있습니다.

서비스 공급자

서비스 공급자(SP)는 ID 공급자를 사용하여 전자 사용자 자격 증명을 통해 사용자에 대한 정보를 어설션하고, 서비스 공급자가 신뢰할 수 있는 사용자 자격 증명 어설션 세트에 따라 액세스 제어 및 보급을 관리할 수 있도록 합니다.

클러스터형 SSO 및 비클러스터형 SSO

클러스터되지 않은 SSO는 권한 부여 정보 공유를 동일한 가상 호스트의 애플리케이션으로 제한합니다. 또한 호스트 장애가 발생할 경우 복원력도 없습니다. 클러스터형 SSO 시나리오에서는 여러 가상 호스트의 애플리케이션 간에 데이터를 공유할 수 있으므로 오류가 발생할 수 있습니다. 또한 클러스터된 SSO는 로드 밸런서에서 요청을 받을 수 있습니다.

1.6.1. 타사 SSO 구현

Kerberos

Kerberos는 클라이언트-서버 애플리케이션을 위한 네트워크 인증 프로토콜입니다. 비밀 키 대칭 암호화를 사용하여 비보안 네트워크에서 보안 인증을 허용합니다.

Kerberos는 티켓이라는 보안 토큰을 사용합니다. 보안 서비스를 사용하려면 사용자는 네트워크의 서버에서 실행되는 서비스인 티켓 부여 서비스(TGS)에서 티켓을 받아야 합니다. 사용자는 티켓을 획득한 후 동일한 네트워크에서 실행되는 다른 서비스인 인증 서비스(AS)에서 서비스 티켓(ST)을 요청합니다. 그런 다음 사용자는 ST를 사용하여 원하는 서비스에 인증합니다. TGS 및 AS는 KDC(키 배포 센터)라는 엔클로징 서비스 내에서 실행됩니다.

Kerberos는 클라이언트-서버 데스크탑 환경에서 사용하도록 설계되었으며 일반적으로 웹 애플리케이션 또는 씬 클라이언트 환경에서 사용되지 않습니다. 그러나 많은 조직에서 데스크탑 인증에 Kerberos 시스템을 사용하고 웹 애플리케이션에 대해 두 번째 시스템을 생성하는 대신 기존 시스템을 재사용하는 것을 선호합니다. Kerberos는 Microsoft의 Active Directory에 핵심적인 일부이며 여러 Red Hat Enterprise Linux 환경에서 사용됩니다.

SPNEGO

단순하고 보호되는 GSS_API 협상 메커니즘(SPNEGO)은 웹 애플리케이션에서 사용하기 위한 Kerberos 기반 SSO 환경 확장 메커니즘을 제공합니다.

웹 브라우저와 같은 클라이언트 컴퓨터에 있는 애플리케이션이 웹 서버에서 보호된 페이지에 액세스하려고 하면 서버에서 권한 부여가 필요한지 응답합니다. 그러면 애플리케이션이 KDC에서 ST를 요청합니다. 애플리케이션은 SPNEGO 형식이 지정된 요청으로 티켓을 래핑하고 브라우저를 통해 웹 애플리케이션으로 다시 보냅니다. 배포된 웹 애플리케이션을 실행하는 웹 컨테이너는 요청의 압축을 풀고 티켓을 인증합니다. 성공적인 인증에 따라 액세스가 부여됩니다.

SPNEGO는 Red Hat Enterprise Linux 및 Kerberos 서버 내의 Kerberos 서비스를 비롯한 모든 종류의 Kerberos 공급자와 함께 작동하며, 이는 Microsoft의 Active Directory에 핵심적인 부분입니다.

Microsoft의 Active Directory

AD(Active Directory)는 Microsoft Windows 도메인에서 사용자와 컴퓨터를 인증하기 위해 Microsoft가 개발한 디렉터리 서비스입니다. Windows Server의 일부로 제공됩니다. 도메인을 제어하는 Windows Server를 실행하는 컴퓨터를 도메인 컨트롤러라고 합니다. Red Hat Enterprise Linux는 Red Hat Identity Management, Red Hat JBoss Enterprise Application Platform 및 기타 Red Hat 제품과 마찬가지로 Active Directory 도메인과 통합할 수 있습니다.

Active Directory는 함께 작동하는 세 가지 핵심 기술을 사용합니다.

  1. 사용자, 컴퓨터, 암호 및 기타 리소스에 대한 정보를 저장하는 LDAP
  2. 네트워크를 통해 보안 인증을 제공하는 Kerberos
  3. 네트워크의 다른 장치와 IP 주소와 호스트 이름 간의 매핑을 제공하는 DNS(Domain Name Service)

1.6.2. 클레임 기반 ID

SSO를 구현하는 한 가지 방법은 클레임 기반 ID 시스템을 사용하는 것입니다. 클레임 기반 ID 시스템을 사용하면 시스템에서 ID 정보를 전달할 수 있지만, 해당 정보는 클레임 및 발급자 또는 권한이라는 두 가지 구성 요소로 추상화됩니다. 클레임은 사용자, 그룹, 애플리케이션 또는 조직과 같은 한 주체가 다른 제목을 만들라는 설명입니다. 해당 클레임 또는 클레임 집합은 토큰 또는 토큰 집합으로 패키징되어 프로바이더가 발행합니다. 클레임 기반 ID를 사용하면 개별 보안 리소스가 사용자에 대해 모든 것을 알지 못해도 SSO를 구현할 수 있습니다.

보안 토큰 서비스

STS(보안 토큰 서비스)는 보안 애플리케이션, 웹 서비스 또는 Jakarta Enterprise Bean에 대한 사용자를 인증하고 인증할 때 사용하기 위해 클라이언트에 보안 토큰을 발행하는 인증 서비스입니다. 서비스 프로바이더라고 하는 STS로 보안된 애플리케이션에 대해 인증을 시도하는 클라이언트는 중앙 집중식 STS 인증 도구로 리디렉션되고 토큰을 발행합니다. 성공하면 해당 클라이언트는 서비스 프로바이더에 액세스하여 원래 요청과 함께 토큰을 제공합니다. 해당 서비스 프로바이더는 STS를 사용하여 클라이언트의 토큰을 확인하고 적절하게 진행합니다. 이 토큰은 다른 웹 서비스 또는 STS에 연결된 Jakarta Enterprise Beans에 대해 클라이언트가 재사용할 수 있습니다. 보안 토큰을 발행, 취소, 갱신 및 검증할 수 있는 중앙 집중식 STS의 개념을 지정하고 보안 토큰 요청 및 응답 메시지 형식을 WS-Trust 라고 합니다.

브라우저 기반 SSO

브라우저 기반 SSO에서 서비스 프로바이더라고 하는 하나 이상의 웹 애플리케이션은 허브 및 대화 아키텍처의 중앙 집중식 ID 프로바이더에 연결합니다. IDP는 SAML 토큰의 청구 보고서를 서비스 공급자 또는 대화자에게 발행하여 ID 및 역할 정보에 대한 중앙 소스 또는 허브 역할을 합니다. 사용자가 서비스 공급자에 액세스하려고 할 때 또는 사용자가 ID 공급자로 직접 인증을 시도할 때 요청이 발생할 수 있습니다. 이러한 흐름은 각각 SP-initiated 및 IDP 시작 flows라고 하며 둘 다 동일한 claim 문을 발행합니다.

SAML

SAML(Security Assertion Markup Language)은 두 당사자(일반적으로 ID 프로바이더와 서비스 공급자)가 인증 및 권한 부여 정보를 교환할 수 있는 데이터 형식입니다. SAML 토큰은 STS 또는 IDP에서 발행한 토큰 유형입니다. SSO를 활성화하는 데 사용할 수 있습니다. SAML, SAML 서비스 프로바이더가 보안한 리소스는 사용자를 STS 또는 IDP 유형인 SAML ID 프로바이더로 리디렉션하여 해당 사용자를 인증하고 인증하기 전에 유효한 SAML 토큰을 가져옵니다.

데스크탑 기반 SSO

데스크탑 기반 SSO를 사용하면 서비스 공급자 및 데스크탑 도메인(예: Active Directory 또는 Kerberos)이 주체를 공유할 수 있습니다. 실제로 이를 통해 사용자는 도메인 자격 증명을 사용하여 컴퓨터에 로그인한 다음, 다시 인증하지 않고도 서비스 프로바이더가 인증 중에 해당 주체를 재사용하여 SSO를 제공할 수 있습니다.