2009-10-03 3 views
0

Я создаю приложение, которое будет иметь веб-сайт, windows и мобильный (iPhone) клиент, я хочу использовать WCF для реализации уровня сервиса и не знакомы с WCF. Я немного путают, когда дело доходит до обеспечения безопасности, аутентификации и авторизации.WCF Security для Web, Windows и мобильных клиентов

Обычно мне хотелось бы использовать как можно больше компонентов членства ASP.Net, чтобы сохранить время написания этого кода, поскольку он утомительный и повторяющийся. Это хороший подход и какие альтернативы существуют?

Может ли кто-нибудь дать мне указания относительно наилучшего достижения того, что я ищу?

ответ

1

Если вы запустите WCF в «режиме совместимости ASP.NET» (это один из атрибутов в коде, чтобы разрешить его и одну строку конфигурации, чтобы включить его), вы можете использовать все обычные механизмы безопасности ASP.NET с WCF как -является. См. http://msdn.microsoft.com/en-us/library/aa702682.aspx

1

Просмотрите эту статью по номеру WCF security scenarios, в которой объясняется множество лучших практик, которые вы должны принять.

Вы в основном есть три варианта для обеспечения обмена сообщениями между клиентом и сервером:

  • ничего
  • транспортного уровня (например, защитить все сообщения непосредственно на уровне протокола)
  • сообщений уровня (например, защищать/шифровать сообщение как таковое)

Как правило, вы должны использовать безопасность на уровне транспортного уровня (уровень TCP/IP), когда вы можете быть уверены, что существует только один хоп между вашим клиентом и вашим сервисом, например. в корпоративной локальной сети за брандмауэром. Это самый быстрый - используйте netTcpBinding в вашей корпоративной (Windows) локальной сети.

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

Теперь речь идет только об обеспечении сообщения на своем пути.

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

Как только вы знаете, кто это вам звонит, вы можете сделать авторизацию - решив, что они могут сделать. Здесь вы обычно используете членство в Active Directory в сценариях корпоративной/локальной сети или в системе членства/роли ASP.NET в других сценариях. Или вы можете сворачивать самостоятельно - это полностью зависит от вас.

Надеюсь, что поможет немного, и вы начнете сейчас!

Marc

Смежные вопросы