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

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

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

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

19.08.2008 22:26:12
5 ОТВЕТОВ

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

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

0
20.08.2008 07:58:25

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

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

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

0
20.08.2008 08:45:12

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

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

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

0
20.08.2008 13:15:14

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

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

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

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

2
10.09.2008 04:53:34

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

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

0
3.08.2009 15:06:51