У нас есть служба данных WCF, которая размещается на собственном хостинге в службе Windows (без использования IIS), которую мы в настоящее время работаем над обеспечением безопасности с помощью SSL и проверки подлинности Windows.
После некоторого времени, поигравшего с netsh и сертификатами сервера, теперь у нас есть служба, защищенная с помощью SSL, и мы также включили аутентификацию Windows в привязке webHttpBinding в нашем app.config - однако теперь мы наблюдаем некоторое странное поведение при попытке аутентификации определенных пользователей - некоторые могут войти в систему нормально, учетные данные других отклоняются, и им выводятся сообщения об ошибках HTTP 400.
После некоторого тестирования и поиска может показаться, что мы можем столкнуться с этой проблемой, где аутентификация заголовок, используемый Kerberos, может быть больше, чем максимально разрешенная длина заголовка (которая, как я полагаю, составляет 16 КБ) для определенных пользователей - и, хотя существует документированный обходной путь для IIS, похоже, нет эквивалентной настройки, которую мы могли бы использовать для самостоятельной размещенная служба или в нашем app.config - если я чего-то не упускаю? Мы попытались установить для полей maxReceivedMessageSize и maxBufferSize их максимальные значения, чтобы увидеть, будет ли это иметь какое-либо значение, но, по-видимому, нет.
Конфигурация привязки:
<webHttpBinding>
<binding name="DataServicesBinding"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</webHttpBinding>
Нам удалось временно обойти эту проблему, установив clientCredentialType в нашей привязке для использования вместо этого Ntlm, но мы хотели бы, чтобы Kerberos работал, если это возможно, по очевидным причинам.