Как защитить конфиденциальные данные в клиентском приложении WCF? - PullRequest
4 голосов
/ 07 февраля 2011

У меня есть веб-служба WCF и клиент, который вызывает эту службу. Этот клиент будет развернут во многих местах. Я должен аутентифицировать и авторизовать каждого клиента уникально. Таким образом, каждое местоположение будет иметь свое уникальное имя пользователя и пароль.

Теперь мои вопросы

  1. как уникально идентифицировать каждого клиента?
  2. как хранить конфиденциальные данные на стороне клиента?

Я думал о нескольких подходах,

  1. Использование сертификата для идентификации клиента. Я должен создать и развернуть сертификат.
  2. Наличие активного каталога на стороне сервера, и пусть каждый клиент использует учетную запись пользователя Windows.
  3. Шифрование имени пользователя и пароля и сохранение их в конфигурационном файле. Я считаю, что шифрование файлов конфигурации с использованием aspnet_regiis мне не поможет, поскольку любой может расшифровать его, если получит доступ к машине.

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

Ваш вопрос можно разделить на три части.Два непосредственно связаны с безопасностью в WCF, а один выходит за рамки.

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

Конфиденциальность и целостность - из-за вашейПринимая во внимание безопасность, вы должны также включать безопасную передачу учетных данных (и данных сообщений).Если вы не обеспечите безопасный транспорт, то кто-либо в сети сможет прослушать данные и украсть учетные данные (или данные).Злоумышленник также сможет перехватывать связь и изменять передаваемые данные.Для безопасной связи вам нужна безопасность транспорта (TLS, SSL / HTTPS) или защита сообщений - в сценарии Интернета, предоставляемом сертификатами.

Защита учетных данных на клиенте - это в основном вне вашего контроля.После развертывания клиентского приложения с учетными данными на клиентском компьютере, который не находится под вашим контролем, вы никогда не сможете обеспечить безопасность предоставленных учетных данных.Это зависит от ваших пользователей / клиентов.Если вы как-то включите учетные данные в свое приложение, то опытный конечный пользователь / злоумышленник, вероятно, всегда сможет их получить.Но это проблема любого безопасного решения - кто-то должен иметь доступ к учетным данным.

0 голосов
/ 07 февраля 2011

Я склонен отдавать предпочтение сертификатам. Их сложнее пойти на компромисс, чем у / п.

Если данные вашего клиента достаточно легкие, просто зашифруйте файл XML , используя симметричное шифрование в клиентском приложении.

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

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