Клиент не может пройти аутентификацию при подключении к службе WCF - PullRequest
2 голосов
/ 10 февраля 2010

У меня есть служба WCF, размещенная в службе Windows. Приложение представляет собой приложение для внутренней сети, и я программно установил привязки как для службы, так и для клиента следующим образом:

NetTcpBinding aBinding = new NetTcpBinding(SecurityMode.Transport);
aBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
aBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;

У службы и клиента есть конечные точки, настроенные с именами SPN:

EndpointAddress = new EndpointAddress(uri, EndpointIdentity.CreateSpnIdentity("Service1"));

Насколько я знаю, я правильно настроил привязки - и я обычно могу нормально подключиться к сервису. Однако я столкнулся со случаем, когда на сервере под управлением Windows Server 2003 R2, x64, SP2 я сразу получаю следующее исключение, когда клиент пытается подключиться:

INNEREXCEPTION - Сообщение об исключении:

InvalidCredentialException: Либо целевое имя неверно, либо сервер отклонил учетные данные клиента.

Трассировка стека:

at System.Net.Security.NegoState.ProcessAuthentication(LazyAsyncResult lazyResult)
   at System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential credential, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
   at System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade(Stream stream, SecurityMessageProperty& remoteSecurity)

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

Сам хостинг работает как учетная запись пользователя домена, но я попытался запустить сервис как локальная система и сетевая служба безрезультатно. Я проверил локальные политики безопасности для сервера и ничего не обнаружил (т. Е. «Доступ к этому компьютеру из сети» включает «Все»).

Кто-нибудь имеет представление о том, что может решить эту проблему?

Мне интересно, нужно ли мне что-то делать в Active Directory в отношении SPN службы? Я читал об использовании setspn.exe для регистрации или обновления имен участников-служб, но мне не нужно было делать это раньше. Почему это работает с другими конфигурациями, но не с вышеуказанными?

1 Ответ

0 голосов
/ 29 марта 2010

Попробуйте запустить службу как учетную запись с правами локального администратора - если вы не можете запустить службу с таким большим разрешением, то я верю, что вам нужно будет использовать setspn.exe, как вы уже упоминали.

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