2009-04-17 4 views
2

Я занимаюсь проектированием приложения WCF. Цель приложения - предоставить страховым членам доступ к их страховой информации через Интернет.Архитектура WCF

Проблема заключается в нашей сетевой архитектуре, и я не совсем уверен, какой тип или комбинацию безопасности я должен использовать.

В нашей внутренней сети у нас есть среда UNIX, к которой я обращаюсь, используя оболочку EntireX .net, и у нас есть хранилище данных Oracle 10g, доступ к которому я могу получить через корпоративную библиотеку.

Я создал BLL, содержащий бизнес-объекты и DAL, которые заполняют эти объекты через Enterprise Library/EntireX.

Я создал слой услуг WCF с двумя службами WCF, один для доступа к хранилищу oracle и один для доступа к unix, и они ссылаются на BLL.

Я собираюсь разместить эту службу в IIS на производственном сервере с SQL 2005 внутри брандмауэра. Мы приобрели веб-сервер, для которого мы создаем DMZ, и этот веб-сервер будет связываться с производственным сервером только через порт 443 и/или порт 80. Наш интернет-сайт нашей компании будет иметь доступ к веб-серверу в DMZ.

Презентационный уровень будет интерфейсом ASP.Net, который вызывает службу в коде с помощью Channelfactory. Я использую клиентские сертификаты X509, которые клиент должен предоставить службе. Служба защищена SSL. Передняя часть будет находиться на веб-сервере в DMZ.

Я использую wsHttpBinding с транспортной безопасностью и clientCredentialType = "Сертификат", который работает нормально, но я хочу передать информацию для входа в службу. Я думал добавить его в заголовок сообщения.

Теперь я на стадии, что я сомневаюсь в жизнеспособности моего дизайна. Может ли кто-нибудь дать мне несколько советов о том, какую привязку и безопасность я должен использовать в этом сценарии, как пройти регистрационную информацию и то, что я должен иметь на моем уровне предварительного уведомления, чтобы быть наиболее безопасным. Мы контролируем, какие порты будут открыты через брандмауэр на внутреннем сервере. У нас будет только один клиент ASP.Net, размещенный на веб-сервере в DMZ, но только HTTPS или HTTP-доступ к серверу.

Большое спасибо Райан

Благодаря

+0

Когда вы говорите: «Я хочу передать информацию для входа в службу», вы хотите, чтобы вы хотели, чтобы идентификатор пользователя был доступен на уровне служб? – Dan

ответ

1

Я думаю, что ваш подход звучит нормально. Если ваши сервисы WCF будут использоваться только вашим приложением asp.net для вашего интерфейса, я бы, вероятно, подумал о размещении уровня сервиса в службе Windows и использовании привязки TCP (тогда вам не придется иметь дело с IIS и, возможно, без сертификатов) , Но это может потребовать от вас немного изменить требования к инфраструктуре (вы все равно можете использовать порт 80/443, но вы столкнетесь с другими неприятными проблемами, связанными с использованием портов, которые IIS обычно использует). Вы можете начать с привязки IIS/HTTP и позже переключиться с минимальным воздействием на общее приложение (то есть на красоту WCF).

Что касается самих сервисов, я бы также рассмотрел возможность публикации 1 простого фасада поверх двух ваших репозиториев. Таким образом, ваш клиент не связывается с концепциями вашей системы oracle db и unix. Это спорно, хотя, вы только упомянули технологии, используемые, если эти две системы представляют различные бизнес-домены, а затем держать их отдельно, имеет смысл. Если вы только раскалываете их, потому что это две разные системы, я бы попытался отбросить эти системы из пользовательского интерфейса.

Для передачи учетных данных я рекомендую использовать политику авторизации в сочетании с претензиями. Для получения дополнительной справки по этой теме проверьте lessprivilege.com, если вы ее еще не нашли.Вот article, чтобы вы начали

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