Сведения о вопросе

Junior

02:06, 9th August, 2020

Теги

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

Просмотров: 445   Ответов: 5

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

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

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



  Сведения об ответе

repe

17:50, 3rd August, 2020

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

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

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

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


  Сведения об ответе

padenie

21:40, 14th August, 2020

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

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


  Сведения об ответе

JUST___

06:49, 12th August, 2020

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

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


  Сведения об ответе

padenie

10:28, 11th August, 2020

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

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

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


  Сведения об ответе

прога

13:20, 7th August, 2020

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться