Ошибка подключения к службе WCF с безопасностью Windows - PullRequest
8 голосов
/ 02 апреля 2012

У меня есть клиент, подключающийся к службе 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 учетной записи в качестве идентификатора в конечный адрес для сервера.

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

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

1 Ответ

2 голосов
/ 02 апреля 2012

Если аутентификация работает с LocalSystem, но не с учетной записью домена, возможно, у вас отсутствует имя участника-службы для учетной записи домена. На этой странице приведены некоторые сведения о настройке удостоверения, под которым работает ваша служба: http://msdn.microsoft.com/en-us/library/bb628618.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...