2012-04-25 2 views
4

У меня есть веб-сервис WCF с использованием basicHttpBinding с NTLM, размещенным в IIS 7 (анонимная аутентификация отключена и включена проверка подлинности Windows). AppPool с использованием сквозной аутентификации. У меня есть консольное приложение, удаленно подключающееся к веб-службе.Как аутентифицировать консольное приложение с помощью веб-службы WCF с помощью NTLM?

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

The HTTP request is unauthorized with client authentication scheme 'Ntlm'. The authentication header received from the server was 'NTLM'.

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

The remote server returned an error: (401) Unauthorized.

Это проблема с учетной записью домена или мою схему аутентификации ? Сообщение об ошибке означает, что это схема аутентификации, но почему она работает под моей учетной записью, а не с учетной записью службы, созданной в том же домене?

сервер Config

<security mode="TransportCredentialOnly"> 
    <transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" /> 
</security> 

Потребление Клиент

public static WMServiceClient CreateWMServiceProxy() 
{ 
    var proxy = new WMServiceClient(); 

    proxy.Endpoint.Address = new EndpointAddress(ConfigurationCache.WMServiceEndpoint); 
    proxy.Endpoint.Binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly) 
    { 
     MaxBufferSize = 2147483647, 
     MaxReceivedMessageSize = 2147483647 
    }; 

    ((BasicHttpBinding) proxy.Endpoint.Binding).Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm; 

    return proxy; 
} 
+0

Эти сообщения имеют внутренние исключения, которые объясняют, что происходит под капотом. Моя первая мысль заключается в том, что учетная запись службы не имеет соответствующих разрешений AD для проверки вашей личности. – Sean

+0

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

+0

Обновлено сообщение с внутренним исключением. Похож на 401. Я поеду с командой безопасности. –

ответ

1

Решение: Это было на самом деле не ошибка WCF, как я первоначально думал. Когда я зарегистрировал внутреннее исключение, я обнаружил, что получаю ошибку «401 - Несанкционированный». Оказывается, что созданная учетная запись службы не получила доступ к удаленному подключению к главной машине службы. Как только мы предоставили доступ и добавили учетную запись службы в качестве пользователя, процесс был правильно подключен.

Смежные вопросы