c2WTS(Claims to Windows Token Service) 개요

는 SAML 및 X.509 토큰과 같은 Windows 이외 보안 토큰에서 UPN 클레임을 추출하고 가장 수준 Windows 보안 토큰을 생성하는 WIF(Windows® Identity Foundation)의 기능입니다. 이 기능을 사용하면 RP(신뢰 당사자) 응용 프로그램이 사용자를 가장할 수 있습니다. SQL Server와 같이 RP 응용 프로그램이 실행되는 컴퓨터의 외부에 있는 백엔드 리소스에 액세스할 때 필요할 수 있습니다.

는 WIF와 함께 설치되는 Windows 서비스입니다. 그러나 보안상의 이유로 는 옵트인 기반으로 엄격하게 작동되며, 수동으로 시작해야 하고 로컬 시스템 계정으로 실행됩니다. 또한, 관리자가 허용되는 호출자 목록에 를 수동으로 구성해야 합니다. 기본적으로 이 목록은 비어 있습니다. 자세한 내용은 c2WTS에서 토큰을 요청하는 방법을 참조하십시오. WIF는 IPC를 사용하여 를 호출하고 는 네트워크 포트를 열지 않습니다.

RP 응용 프로그램이 로컬 시스템 계정으로 실행될 경우에는 를 사용할 필요가 없습니다. 그러나, RP 응용 프로그램이 네트워크 서비스 계정으로 실행되거나 ASP.NET 응용 프로그램이면 다른 컴퓨터의 리소스에 액세스할 때 를 사용해야 할 수도 있습니다.

백엔드 서버의 SQL 데이터베이스에 액세스하는 ASP.NET 응용 프로그램을 실행 중인 서버로 구성된 웹 팜을 가정해 보십시오. 이 응용 프로그램을 클레임 인식 응용 프로그램으로 만들 수 있습니다. 그러나, STS에서 수신한 클레임을 사용하여 SQL 데이터베이스에 액세스할 수는 없습니다. 대신, 를 사용하여 UPN 클레임을 Windows 보안 토큰으로 변환합니다. 이렇게 하면 이전처럼 SQL 데이터베이스에 액세스할 수 있습니다.

응용 프로그램이 다른 서버에 있는 리소스에 액세스할 수 있으려면 도메인 관리자가 제한된 위임을 사용하도록 Active Directory를 구성해야 합니다. 제한된 위임을 사용하는 방법에 대한 자세한 내용은 ASP.NET 2.0에서 프로토콜 변환 및 제한된 위임을 사용하는 방법을 참조하십시오.

참고

를 사용하고 바인딩이 쿠키 모드 보안 대화이면 를 사용하여 직렬화된 UPN의 Windows ID를 보안 대화 쿠키로 리하이드레이션할 수 있습니다. 이것은 를 사용하도록 설정했지만 올바르게 구성하지 않은 경우 쿠키 모드와 세션 모드 보안 대화 간에 전환할 때 인증되지 않을 수 있음을 의미합니다.

c2WTS를 사용하여 Windows 보안 토큰을 얻는 방법

는 mapToWindows 또는 필요 시 UpnLogon 메서드를 호출하는 두 가지 방법으로 사용합니다. 응용 프로그램에 가장 수준의 Windows 보안 토큰이 항상 필요하면 <securityTokenHandlers> 요소의 samlSecurityTokenRequirement에서 mapToWindows 속성을 사용하도록 설정합니다. 그러나 응용 프로그램에서 특정 사례에만 가장 수준 Windows 보안 토큰이 필요한 경우에는 필요에 따라 프로그래밍 방식으로 UpnLogon 메서드를 호출하도록 선택할 수 있습니다. useWindowsTokenService 속성이 true로 설정되고 구성이 이 메서드를 성공적으로 호출하는 올바른 호출자 목록과 함께 추가되어야 합니다.

WIF는 RP 응용 프로그램이 호출할 수 있는 UpnLogon 메서드를 제공하여 STS에서 수신한 UPN 클레임을 전달합니다. 그런 다음 WIF는 IPC를 사용하여 로컬 를 호출합니다. UpnLogon은 사용자를 나타내는 WindowsIdentity를 반환합니다. 다음 그림에서는 이 작업의 작동 방식을 보여 줍니다.

e6a9def2-c55f-427c-a30f-1a4d8d299191

  1. 클라이언트 요청이 RP 응용 프로그램에 도착합니다. 이 요청을 수행하려면 RP 응용 프로그램이 외부 리소스에 액세스해야 하므로, 이를 위해 RP 응용 프로그램이 사용자를 가장해야 합니다.

  2. 인증을 위해 RP 응용 프로그램에서 클라이언트를 IP-STS로 리디렉션합니다.

  3. IP-STS는 사용자를 인증하고 UPN 클레임(https://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn 유형의 클레임)이 들어 있는 SAML 토큰을 발급합니다. 에서는 UPN 문자열이 이 작업을 수행해야 합니다.

  4. 클라이언트가 STS 토큰을 RP 응용 프로그램에 제출합니다.

  5. RP 응용 프로그램이 SAML 토큰의 유효성을 검사하고 UPN 클레임을 추출합니다.

  6. RP 응용 프로그램에서 UPN 클레임을 UpnLogon 메서드에 매개 변수로 전달하고 Windows 보안 토큰을 다시 가져옵니다. 이 메서드는 SecurityTokenHandlers의 SamlSecurityTokenRequirement에서 mapToWindows 속성이 true로 설정되고 <microsoft.IdentityModel>의 <windowsClaimsIdentity> 요소에서 useWindowsTokenService가 true로 설정된 경우 Saml 1.1 및 Saml 2 SecurityTokenHandlers에 의해 자동으로 호출됩니다.

  7. RP 응용 프로그램은 Windows ID를 사용하여 사용자를 가장하고 리소스에 액세스합니다.