Аутентифицировать клиента, подключающегося к веб-сервису - PullRequest
0 голосов
/ 22 апреля 2009

У меня есть веб-сервис WCF. Этот веб-сервис должен позволять только определенным клиентским приложениям (созданным с использованием таких технологий, как Silverlight, Flex, ClickOnce и т. Д.) Выполнять свои функции. Пытаясь добиться этого, я запустил каждый общедоступный метод со следующим кодом:

if (IsClientValid (...) == false) возвращение;

Мой вопрос: на что мне обратить внимание? Я рассмотрел передачу уникального идентификатора в качестве строкового параметра, а затем передать этот параметр в метод IsClientValid. Однако я знаю, что кто-то может использовать такой инструмент, как Fiddler, чтобы определить значение этого параметра и использовать его в своих собственных приложениях. Как однозначно идентифицировать мои клиентские приложения, чтобы только они могли использовать мои веб-службы WCF?

Спасибо

Ответы [ 2 ]

1 голос
/ 22 апреля 2009

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

  • Безопасность сообщений - для шифрования ваших сообщений клиент должен предоставить учетные данные (userNameAuthentication) с сервером, предоставляющим serviceCertificate для шифрования сообщений.

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

  • Все исходящие сообщения клиента имеют зашифрованный заголовок, который сервер извлекает / расшифровывает при получении, а базовая служба проверяет наличие требуемых значений.

  • В дополнение к этому, коллекция зашифрованных заголовков хранится на стороне сервера для защиты от атак воспроизведения с использованием перехваченных заголовков.

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

Edit: Предполагая, что клиентские приложения находятся под вашим контролем.

0 голосов
/ 22 апреля 2009

Оформить аутентификация сертификата клиента . Основная идея заключается в том, что соединение https не будет установлено, если клиент не отправит действительный сертификат, где вы сможете определить, что является действительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...