Ознакомьтесь с этой серией статей о сценариях безопасности WCF , в которых объясняется множество рекомендаций, которые вам следует принять.
У вас есть три варианта обеспечения безопасности обмена сообщениями между вашим клиентом и сервером:
- ничто
- транспортный уровень (например, защита всего сообщения непосредственно на уровне протокола)
- уровень сообщения (например, защита / шифрование сообщения как такового)
Как правило, вы склонны использовать безопасность на транспортном уровне (на уровне TCP / IP), когда вы можете быть уверены, что между вашим клиентом и вашим сервисом существует только один скачок, например, в корпоративной среде локальной сети позадибрандмауэр.Это самый быстрый способ - использовать netTcpBinding
в вашей корпоративной (Windows) локальной сети.
Если у вас потенциально многократные прыжки (например, маршрутизаторы, посредники хранения и пересылки и т. Д.) - обычно это интернет / внешние клиентысценарий - тогда защита на транспортном уровне больше не будет работать, поэтому вам, вероятно, придется использовать защиту на уровне сообщений для шифрования и подписи сообщения как такового, когда оно передается от клиента к службе.
Теперь речь идет о защите сообщения в пути.
Что касается аутентификации (зная, кто вам звонит), вы обычно можете использовать учетные данные Active Directory / Windows внутри вашей локальной сети / компании.или имя пользователя / пароль для внешних клиентов (или, возможно, сертификаты для той же цели, хотя это немного больше работы).Вы также можете представить, что можете разрешить анонимным пользователям, которые не сообщают вам, кто они, или не отвергают их, - это ваше дело.
Как только вы узнаете, кто вам звонит, вы можете выполнить авторизацию - решить, что онисможет сделать.Здесь вы обычно используете членство в группе Active Directory в корпоративных / локальных сценариях или систему членства / роли ASP.NET в других сценариях.Или вы можете бросить свой собственный - это полностью ваше дело.
Надеюсь, что немного поможет и поможет вам начать сейчас!
Марк