2015-01-14 2 views
0

У меня есть служба WCF, которую я использую как службу Windows. Мне нужно поддерживать аутентификацию Windows и NTLM в конечной точке службы.WCF: использование нескольких схем аутентификации на той же конечной точке

я наткнулся на странице MSDN, которая объясняет точно так же с .NET 4.5, вот ссылка:

http://msdn.microsoft.com/en-us/library/hh556235(v=vs.110).aspx

Идя этим, я настроил мой конечную точку службы в коде, как описано в само- размещенных сервисов в приведенной выше ссылке. Но, когда я проверяю это, это не сработает. Я захватил трафик и заметил, что служба HTTP 401 не отправлена ​​службой, вместо этого она напрямую выходит из строя с ошибкой HTTP 400 Bad Request. Я считаю, что это должен был быть вызов HTTP 401, отправленный клиенту.

Я пропустил что-нибудь здесь?

ответ

1

Ну, это возможно, и я мог бы заставить его работать после 4 дней борьбы, ошибки HTTP Bad Request не указывают на проблему. Но, поскольку я добавил поведение метаданных службы с HttpGetEnabled, он сработал.

Кроме того, убедитесь, что вы определяете ServiceAuthenticationBehavior, который вы помечаете ClientCredentialType для InheritedFromHost. Это обеспечит применение схем аутентификации, указанных в ServiceAuthenticationBahavior.

Надеюсь, это спасло бы чужие 4 дня! :)

0

У вас может быть несколько схем аутентификации, работающих в одной и той же службе Windows, но не на той же конечной точке - это невозможно.

Например, я могу создать и IIS или само-хост веб-сервис под названием NeedHelp, которая использует три вида аутентификации, и вот мои конечные точки:

HTTP:// NeedHelp: 8001/NOAUTH

HTTP:// NeedHelp: 8002/WindowsAuth

HTTP:// NeedHelp: 8003/CertAuth

все те могут работать под одной и той же веб-службы, все организовано IIS или самодостаточно в качестве службы Windows. Но все они нуждаются в отдельных адресах портов.

+0

Ссылка MSDN, в которой я поделился утверждениями о поддержке нескольких схем аутентификации на одной и той же конечной точке, но, когда я пытаюсь, я вижу, что он не работает. Технически я не вижу HTTP 401 Challenge для запроса, который я отправляю, и он напрямую не говорит о плохом запросе. – hemaanshu

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