Нужны рекомендации и помощь с ASP.NET + WCF + Security - PullRequest
1 голос
/ 06 июля 2010

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

Пул приложений обоих приложений будет использовать одну и ту же локальную учетную запись пользователя (веб-сервер не является частью домена), поэтому я подумал об использовании WsHttpBinding с защитой Windows для связи между клиентом и внутренней службой wcf.

В приложении fron-end asp.net для проверки подлинности и авторизации пользователей используется проверка подлинности на основе форм через настраиваемого поставщика членства / роли. База данных пользователей находится в базе данных сервера sql.

Мне нужно как-то передать службе wcf данные пользователя (имя пользователя + роли), чтобы в wcf можно было проверять и авторизовать в соответствии с ролями того, кто вошел в интерфейс. Я прочитал, что мне нужно использовать «жетоны поддержки», но я не понял, как это использовать.

Я также читал кое-что о претензиях и WIF, что кажется интересным, но я не представляю, как я могу использовать их в моем сценарии.

Есть ли кто-нибудь, кто может дать мне рекомендации по архитектуре и, возможно, также покажет мне, как передать имя пользователя службе wcf, а также покажет мне, если возможно, использовать авторизацию на основе утверждений?

1 Ответ

1 голос
/ 06 июля 2010

Прежде всего, если оба сервера находятся за корпоративным брандмауэром в корпоративной локальной сети, я настоятельно рекомендую использовать netTcpBinding вместо любой привязки на основе http. NetTcpBinding намного быстрее из-за кодирования сообщения в двоичном формате.

Что касается имени пользователя / пароля: ваш сервер переднего плана ASP.NET может установить учетные данные клиента для пользователя, вызывающего службу WCF - в конце концов, серверы ASP.NET имеют доступ к базе данных членства ASP.NET, не так ли?

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

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

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