Webhttp-привязка с HTTPS и аутентификация с UserNamepPasswordValidator при размещении в IIS - PullRequest
6 голосов
/ 15 июня 2011

Я пытаюсь настроить службу WCF, размещенную в IIS, которая предоставляет конечную точку, которая действует как служба REST, генерирующая данные JSON, и я хочу использовать HTTPS.Я хочу сам позаботиться об аутентификации пользователей с помощью UserNamePasswordValidator, поскольку пользователи хранятся в базе данных.

В настоящее время я использую привязку webhttp для достижения REST-полноты.Моя проблема начинается, когда я пытаюсь включить HTTPS (установка режима безопасности на Транспорт).У меня есть сертификат SSL на стороне сервера (пока я сам подписан), так что это все хорошо, но я не знаю, как настроить транспортный clientCredentialType привязки, чтобы учетные данные передавались в мою реализацию UserNamePasswordValidator.

Я много гуглил, но не могу найти ничего хорошего.Если я правильно понимаю, IIS обрабатывает аутентификацию перед WCF, и с этим ничего не поделаешь?Я действительно предпочел бы не использовать поставщика членства ASP.Net, но, может быть, это подход или есть другой способ?

Спасибо!

Редактировать: Найдено это .Не совсем то, на что я надеялся ...

Ответы [ 2 ]

1 голос
/ 16 июня 2011

После долгих поисков я нашел пару возможных решений.

Рекомендованный способ для аутентификации с помощью служб RESTful WCF, размещенных в IIS, заключается в использовании токенов.Либо с помощью сторонней реализации OAuth, либо для реализации чего-либо вашего self .Однако это вызовет у меня некоторые проблемы с моей конечной точкой nettcp, и я, вероятно, не смогу использовать одну и ту же реализацию для обеих конечных точек (поскольку мне потребуется выполнить некоторую проверку токена для вызовов, поступающих через конечную точку webhttp)

Решение , данное Ладиславом Мрнкой, представляется также действительным.

1 голос
/ 15 июня 2011

Вы не можете использовать UserName учетные данные - это аутентификация на уровне сообщения через заголовок SOAP, но обмен данными JSON не имеет такого заголовка.Попробуйте настроить Basic учетные данные в транспортном элементе (= проверка подлинности на транспортном уровне). Должно работать с пользовательским средством проверки паролей начиная с .NET 3.5 .Для успешной аутентификации вам нужно будет передать действительный заголовок HTTP для базовой аутентификации.

Редактировать:

Я не тестировал его с IIS, поэтому могут возникнуть некоторые проблемы, поскольку IIS вызывает аутентификацию перед пользовательскойвалидатор выполнен.В таком случае вам потребуется пользовательский модуль HTTP для аутентификации .

...