Служба Служба c2WTS (Claims to Windows Token Service) является компонентом платформы Windows® Identity Foundation (WIF) и извлекает UPN-утверждения из маркеров безопасности, отличных от Windows, таких как SAML и X.509, и создает маркеры безопасности Windows уровня олицетворения. Это позволяет приложению проверяющей стороны выполнять олицетворение пользователя. Оно может требоваться для доступа к серверным ресурсам, например базам данных SQL Server, находящимся на внешнем компьютере по отношению к компьютеру, на котором выполняется приложение проверяющей стороны.

c2WTS — это служба Windows, которая устанавливается в составе WIF. Однако по причинам безопасности c2WTS используется исключительно по желанию. Служба запускается вручную и выполняется с локальной системной учетной записью. Кроме того, администратор должен вручную задать для c2WTS список разрешенных вызывающих сторон. По умолчанию этот список пуст. Дополнительные сведения см. в разделе Инструкции: запрос маркера в c2WTS. WIF вызывает c2WTS с помощью IPC, и c2WTS не открывает никаких сетевых портов.

Если приложение проверяющей стороны запускается с локальной системной учетной записью, ему не нужно использовать c2WTS. Однако если приложение проверяющей стороны запускается с учетной записью сетевой службы или является приложением ASP.NET, ему может потребоваться использовать c2WTS для доступа к ресурсам другого компьютера.

Предположим, имеется веб-ферма, состоящая из сервера, на котором запускается приложение ASP.NET, которое обращается к базе данных SQL на фоновом сервере. Необходимо, чтобы это приложение поддерживало утверждения. Однако приложение не может обращаться к базе данных SQL с использованием утверждения, которое оно получает от службы STS. Вместо этого оно использует c2WTS для преобразования UPN-утверждения в маркер безопасности Windows. Это позволяет ему обращаться к базе данных SQL как раньше.

(Обратите внимание: чтобы разрешить приложению обращаться к ресурсам на другом сервере, администратор домена должен включить в Active Directory ограниченное делегирование. Дополнительные сведения о включении ограниченного делегирования см. в разделе Инструкции: использование перехода протокола и ограниченного делегирования в ASP.NET 2.0.)

Примечание.
Если служба c2WTS включена и для привязки задан защищенный диалог в режиме Cookie, c2WTS будет использоваться для воссоздания удостоверения Windows из UPN-имени, которое сериализовано в файле Cookie защищенного диалога. Это означает, что проверка подлинности может завершиться сбоем при переключении между защищенным диалогом в режиме Cookie и в режиме сеанса, если служба c2WTS включена, но неправильно настроена.

Как использовать c2WTS для получения маркера безопасности Windows

Существует два способа использования c2WTS: через mapToWindows или через вызов метода UpnLogon по требованию. Если приложению постоянно требуются маркеры безопасности Windows уровня олицетворения, то можно включить свойство mapToWindows атрибута samlSecurityTokenRequirement в элементе <securityTokenHandlers>. С другой стороны, если маркеры безопасности Windows уровня олицетворения требуются приложению только в определенных случаях, то можно программно вызывать метод UpnLogon при необходимости. Имейте в виду, что для успешного вызова этого метода свойство useWindowsTokenService должно иметь значение true и должна быть добавлена конфигурация c2WTS с соответствующим списком вызывающих сторон.

WIF предоставляет метод UpnLogon, который может вызывать приложение проверяющей стороны, передавая UPN-утверждение, полученное из службы STS. Затем WIF вызывает локальную службу c2WTS с помощью IPC. UpnLogon возвращает удостоверение WindowsIdentity, которое представляет пользователя. На следующем рисунке показан принцип действия.

  1. Запрос клиента поступает в приложение проверяющей стороны. Для обработки этого запроса проверяющей стороне требуется доступ к внешнему ресурсу. Для этого приложение проверяющей стороны должно выполнить олицетворение пользователя.

  2. Приложение проверяющей стороны перенаправляет клиента на службу STS поставщика удостоверений для проверки подлинности.

  3. Служба STS поставщика удостоверений выполняет проверку подлинности пользователя и выпускает маркер SAML с UPN-утверждением (утверждение типа http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn). Обратите внимание, что службе c2WTS требуется строка UPN для выполнения операций.

  4. Клиент отправляет маркер SAML приложению проверяющей стороны.

  5. Приложение проверяющей стороны проверяет маркер SAML и извлекает UPN-утверждение.

  6. Приложение проверяющей стороны передает UPN-утверждение методу UpnLogon в качестве параметра, а метод возвращает маркер безопасности Windows. Этот метод автоматически вызывается обработчиками маркеров безопасности (SecurityTokenHandlers) SAML 1.1 и SAML 2, если свойству mapToWindows объекта SamlSecurityTokenRequirement этих обработчиков и параметру useWindowsTokenService элемента <windowsClaimsIdentity> в <microsoft.IdentityModel> присвоено значение true.

  7. Приложение проверяющей стороны использует удостоверение Windows для олицетворения пользователя и доступа к ресурсу.