Какой лучший способ аутентификации через WCF? - PullRequest
3 голосов
/ 20 августа 2008

Какой лучший способ реализовать аутентификацию через WCF?

Я бы предпочел не использовать WS- *, так как он должен быть независимым от транспорта.

Должен ли я "кататься самостоятельно"? Есть ли какие-либо рекомендации для этого (статьи / сообщения в блоге)?
Или есть какой-то способ (и я должен) использовать встроенных поставщиков членства и профиля ASP.NET на стороне сервера?

Ответы [ 5 ]

2 голосов
/ 10 сентября 2008

Аутентификация на основе сообщений, основанная на WS-Security, - это то, что вам нужно, и она определенно поддерживается basicHttpBinding и netTcpBinding. Я думаю, вы делаете ошибочное предположение, что только WsHttpBinding будет поддерживать WS-Security, что является неточным.

Привязки WS предназначены для элементов WS- *, отличных от WS-Security, таких как WS-ReliableMessaging. Настроить независимую от транспорта защиту сообщений будет непросто, если вы хотите, чтобы она оставалась безопасной. Для транспортов, которые не являются дуплексными, вам необходимо заранее обменять хотя бы один сертификат.

Возможно, это еще одна причина, по которой вы считаете, что защита сообщений не поддерживается basicHttpBinding. basicHttpBinding не позволит вам использовать аутентификацию UserName без защиты транспорта (я также добавлю, что и по уважительной причине). А поскольку безопасность на транспорте по своей природе зависит от транспорта, я полагаю, вы пытаетесь ее избежать.

Так или иначе, если вы хотите быть полностью независимыми от транспорта, первое, что вам нужно - это привести сертификаты в порядок и выяснить, как вы собираетесь распространять первый (корневой) сертификат (ы) или безопасно обменяться сертификаты. Если у вас есть приложение класса люкс, в котором вы можете распространять мастер-сертификат, выберите этот путь. Если вы находитесь в более сложном сценарии, вам нужно сделать шаг назад и подумать, насколько серьезна эта проблема на самом деле.

0 голосов
/ 03 августа 2009

Если вы предоставляете внешнюю службу, требующую аутентификации / авторизации на уровне пользователя, я бы порекомендовал использовать поставщика ASP.NET.

Здесь есть полезная утилита , которая позволяет удаленно администрировать провайдера ASP.NET. Решение ASP.NET требует SQL ...

0 голосов
/ 20 августа 2008

WS- * не зависит от транспорта. Вот и весь смысл.

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

Для внешних API мы использовали аутентификацию WS- * с использованием сертификатов, а затем простой механизм аутентификации (указываются имя пользователя и пароль, возвращается маркер аутентификации GUID, токен предоставляется со всеми запросами после факта).

0 голосов
/ 20 августа 2008

Спасибо за ваши ответы.

Я не имел в виду транспортную зависимость, моя ошибка. Я имел в виду, что хотел бы, чтобы потребитель мог выбирать, к какой конечной точке привязываться. А поскольку basicHttpBinding и netTcpBinding, среди прочего, не поддерживают WS- *, мне нужно использовать что-то на уровне обслуживания.

Простая аутентификация Дэвидса - это то, чего я пытался избежать. В идеале я хотел бы получить способ выполнить то же самое, не добавляя аргумент токена ко всем моим операционным контрактам.

0 голосов
/ 20 августа 2008

Почему WS- * должен зависеть от транспорта?

Весь смысл спецификаций WS- * заключается в том, что они являются частью сообщения и, следовательно, независимы от транспорта.

...