Ошибка при подключении к службе WCF с безопасностью Windows

У меня есть клиент, который подключается к службе WCF, используя на обеих конечных точках следующее:

<security mode="Message">
  <message clientCredentialType="Windows" />
</security>

Это работает в моей среде разработки (обе работают локально), и согласование работает правильно. Когда я отправляю его в тестовую среду, я получаю следующее сообщение:

Согласование безопасности SOAP с «http://host/service» для цели 'http://host/service'не удалось. См. Внутреннее исключение для более подробной информации.

Внутреннее исключение:

System.ComponentModel.Win32Exception: Поставщик поддержки безопасности Ошибка аутентификации интерфейса (SSPI). Сервер может быть не запущен в учетной записи с идентификатором «host/server-name.domain». Если сервер работает под служебной учетной записью (например, Network Service), укажите ServicePrincipalName учетной записи в качестве идентификатора в EndpointAddress для сервера. Если сервер работает под пользователем учетной записи, укажите UserPrincipalName учетной записи в качестве удостоверения в EndpointAddress для сервера.

После произвольного изменения атрибутов и общей возни, единственным способом заставить его работать было изменить пул приложений, чтобы служба использовала LocalSystem в качестве удостоверения. Это впоследствии привело к тому, что у системных администраторов появились котята, и я не могу продолжать это делать.

Кто-нибудь может пролить свет на то, почему это происходит? И клиентская учетная запись Windows, и удостоверение AppPool находятся в одном домене. Служба работает на сервере в том же домене.

8
задан Kieren Johnstone 2 April 2012 в 11:27
поделиться