SSO(Single Sign-On)는 한 번 인증(로그온)된 사용자가 재인증 없이 도메인 내 다른 서비스에 접근할 수 있도록 지원하는 기술입니다. 이를 원격 데스크톱 서비스(RDS)에 적용하면, 도메인에 가입된 컴퓨터에 로그온한 사용자가 RDS 서버에 연결하거나 게시된 RemoteApp을 실행할 때 사용자 이름과 비밀번호를 다시 입력할 필요가 없습니다.
이 글에서는 Windows Server 2016 및 2012 R2 환경의 RDS 서버에서 투명한 SSO 인증을 구성하는 방법과 주요 특징을 단계별로 살펴보겠습니다.
시스템 요구 사항
- 연결 브로커(Connection Broker) 서버와 모든 RDS 서버는 Windows Server 2012 이상이어야 합니다.
- SSO는 도메인 환경에서만 작동합니다. Active Directory 사용자 계정을 사용해야 하며, RDS 서버와 사용자 워크스테이션이 모두 AD 도메인에 포함되어 있어야 합니다.
- RDP 클라이언트에는 RDP 8.0 이상 버전이 필요합니다(Windows XP에는 해당 버전의 RDP 클라이언트를 설치할 수 없습니다).
- RDP 클라이언트 측에서 지원되는 운영체제는 Windows 10, 8.1, 7입니다.
- SSO는 비밀번호 기반 인증에서만 작동하며, 스마트 카드는 지원하지 않습니다.
- 연결 설정의 RDP 보안 계층(RDP Security Layer)은 Negotiate 또는 SSL(TLS 1.0)로 설정하고, 암호화 수준은 High 또는 FIPS Compliant로 지정해야 합니다.
SSO 구성 절차 개요
Single Sign-On 구성은 다음 네 단계로 진행됩니다.
- RD Gateway, RD Web, RD Connection Broker 서버에 SSL 인증서를 발급하고 할당
- RDWeb 서버에서 Web SSO 활성화
- 자격 증명 위임(Credential Delegation) 그룹 정책 구성
- GPO를 통해 신뢰할 수 있는 .rdp 게시자 목록에 인증서 지문(thumbprint) 추가
1단계: SSL 인증서 발급 및 할당
먼저 SSL 인증서를 발급하고 할당해야 합니다. 인증서의 EKU(확장 키 용량, Enhanced Key Usage) 속성에 Server Authentication 식별자가 반드시 포함되어 있어야 합니다. SSL 인증서 발급 절차는 이 글의 범위를 벗어나므로 자세히 다루지 않습니다(자체 서명된 SSL 인증서를 직접 생성할 수도 있지만, 그룹 정책을 통해 모든 클라이언트의 신뢰할 수 있는 인증서로 배포해야 합니다).
인증서는 RDS Deployment 속성의 Certificates 섹션에서 할당할 수 있습니다.

2단계: RDWeb에서 Windows 인증 활성화
Web Access 역할이 설치된 모든 서버에서 IIS의 RDWeb 디렉터리에 대해 Windows Authentication을 활성화하고, Anonymous Authentication은 비활성화합니다.

변경 사항을 저장한 후 IIS를 재시작합니다.
iisreset /noforce
RD Gateway를 사용 중이라면, 내부 클라이언트 연결 시 게이트웨이를 거치지 않도록 설정되어 있는지 확인하세요(Bypass RD Gateway server for local address 옵션이 체크되어 있어야 합니다).

3단계: 자격 증명 위임 그룹 정책 구성
다음으로 자격 증명 위임 정책을 구성합니다. 새 도메인 GPO를 생성하고, RDS 서버에 대한 SSO 접근을 허용해야 하는 사용자(또는 컴퓨터)가 속한 OU에 연결합니다. 모든 도메인 사용자에게 SSO를 허용하려면 Default Domain Policy를 편집하는 것도 가능합니다.
해당 정책은 다음 GPO 경로에 위치합니다: 컴퓨터 구성 → 정책 → 관리 템플릿 → 시스템 → 자격 증명 위임 → Allow delegation defaults credential. 이 정책은 특정 서버가 Windows 사용자의 자격 증명에 접근할 수 있도록 허용합니다.
- 정책을 사용(Enabled)으로 설정합니다.
- 클라이언트가 SSO 인증을 위해 사용자 자격 증명을 자동으로 전송할 수 있는 서버 목록에 RDS 서버 이름을 추가합니다. 서버 추가 형식은 TERMSRV/rd.contoso.com과 같으며, TERMSRV 문자는 모두 대문자여야 합니다. 도메인 내 모든 터미널 서버에 권한을 부여하려면(보안 수준은 낮아짐) TERMSRV/*.contoso.com 형식을 사용할 수 있습니다.

그다음, 원격 응용 프로그램 게시자가 신뢰할 수 없다는 경고 창이 나타나지 않도록, Site to Zone Assignment List 정책을 사용하여 클라이언트 컴퓨터의 신뢰 가능 영역에 Connection Broker 역할 서버의 주소를 추가합니다. 정책 경로는 다음과 같습니다: 사용자/컴퓨터 구성 → 관리 템플릿 → Windows 구성 요소 → Internet Explorer → 인터넷 제어판 → 보안 페이지.
여기에 RDCB 서버의 FQDN 이름을 입력하고 영역 값으로 2(신뢰할 수 있는 사이트)를 지정합니다.

이어서 사용자/컴퓨터 구성 → 관리 템플릿 → Windows 구성 요소 → Internet Explorer → 인터넷 제어판 → 보안 페이지 → 신뢰할 수 있는 사이트 영역에서 Logon options 정책을 활성화하고, 드롭다운 목록에서 현재 사용자 이름 및 암호를 사용하여 자동 로그온을 선택합니다.
4단계: 신뢰할 수 있는 RDP 게시자에 인증서 지문 등록
클라이언트에서 그룹 정책이 업데이트된 후 RemoteApp을 실행하면 비밀번호 입력 창은 더 이상 나타나지 않지만, 대신 다음과 같은 경고 창이 표시될 수 있습니다.
이 RemoteApp 프로그램의 게시자를 신뢰합니까?

사용자가 로그온할 때마다 이 메시지가 표시되지 않도록 하려면, RD Connection Broker의 SSL 인증서 지문(thumbprint)을 확인하여 신뢰할 수 있는 rdp 게시자 목록에 추가해야 합니다. RDS Connection Broker 서버에서 다음 PowerShell 명령을 실행합니다.
Get-Childitem CERT:\LocalMachine\My

인증서 지문 값을 복사한 후, RDP 게시자를 나타내는 인증서의 SHA1 지문 지정(Specify SHA1 thumbprints of certificates representing RDP publishers) 정책의 지문 목록에 추가합니다. 정책 경로는 다음과 같습니다: 컴퓨터 구성 → 관리 템플릿 → Windows 데스크톱 서비스 → 원격 데스크톱 연결 클라이언트.

SSO 구성 결과 확인
여기까지 완료하면 SSO 구성이 끝납니다. 정책이 적용된 후 사용자는 비밀번호를 다시 입력하지 않고도 RDP를 통해 Windows Server RDS 팜에 연결할 수 있습니다.
mstsc.exe(원격 데스크톱 연결 클라이언트)를 실행하고 RDS 서버 이름을 입력하면, 사용자 이름 필드에 (user@domain.com) 형식의 계정이 자동으로 채워지며 다음 메시지가 표시됩니다.
Windows 로그온 자격 증명이 연결에 사용됩니다.

추가 참고 사항
RD Gateway와 함께 SSO 사용
RD Gateway에서 SSO를 사용하려면 Set RD Gateway Authentication Method 정책을 활성화하고 값을 Use Locally Logged-On Credentials(로컬로 로그온한 자격 증명 사용)으로 설정해야 합니다. 정책 경로는 다음과 같습니다: 사용자 구성 → 정책 → 관리 템플릿 → Windows 구성 요소 → 원격 데스크톱 서비스 → RD Gateway.

RD Web Access에서 Web SSO 사용
RD Web Access에서 Web SSO를 사용하려면 Microsoft Remote Desktop Services Web Access Control(MsRdpClientShell)이라는 ActiveX 구성 요소가 활성화된 Internet Explorer를 사용하는 것이 좋습니다.