Лучшая стратегия для передачи токена / cookie в службу WCF? - PullRequest
5 голосов
/ 22 ноября 2011

Мы создаем веб-сервис с WCF на .net 4.0. Служба будет использоваться в основном внешним интерфейсом ASP.net MVC, но также будет использоваться приложением .net Windows.

Базовая аутентификация имени пользователя и пароля не подходит, поскольку мы не хотим сохранять учетные данные пользователя, поэтому я подумал об аутентификации один раз и создании простого токена (или я должен называть его cookie?) С помощью RNGCryptoServiceProvider. GetBytes () и затем использовать его для аутентификации дальнейших запросов.

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

Какова была бы лучшая стратегия для передачи этого файла cookie от клиента WCF нашим службам WCF? Предпочтительный метод должен быть максимально тесно связан с архитектурой безопасности WCF.

До сих пор я опирался либо на пользовательские заголовки HTTP , либо на пользовательскую авторизацию , но я не уверен, какой из этих методов более подходящий, если таковой имеется.

Имейте в виду, что для веб-сайта ASP новый канал будет создаваться для каждого запроса, и он будет повторно использоваться в приложении Windows.

1 Ответ

3 голосов
/ 22 ноября 2011

В IMO есть два способа обеспечения безопасности wcf: транспорт или сообщения.

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

<security mode="TransportWithMessageCredential"> 
   <message clientCredentialType="UserName"/>
</security>

На стороне сервера вы можете реализовать свой собственный валидатор паролей, как показано в этом примере

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

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