Каков наилучший способ защиты веб-службы SOAP во внутренней частной сети? - PullRequest
4 голосов
/ 19 сентября 2011

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

Мы пытаемся настроить двусторонний SSL, но не можем контролировать авторизацию для определенного веб-сервиса.

Мне нужно иметь возможность контролировать, какое приложение вызывает мой веб-сервис, и разрешено ли этому приложению вызывать его.

Мне не нравятся WS-Trust и Ws-Security, потому что это изменяет исходное сообщение SOAP, но кажется, что они не являются другим решением.

Есть идеи?

Спасибо

Ответы [ 3 ]

2 голосов
/ 19 сентября 2011

В своем вопросе вы упоминаете, что не хотите изменять текущее сообщение SOAP - это означает, что защита на уровне сообщений отключена.

Так что вам нужно продолжать безопасность на транспортном уровне.

Даже с двухсторонним SSL вы сможете авторизовать пользователей на основе отпечатка сертификата пользователя - как это сделать, зависит от используемого вами стека.

Другие варианты: ..

  1. Базовая аутентификация по HTTPS
  2. Двуногий OAuth

Разница в том, что 2-сторонний oauth поддерживает отказ от авторства, в то время как базовая аутентификация - нет.

Независимо от механизма, который вы используете для аутентификации, вы можете использовать XACML для детальной авторизации ...

1 голос
/ 19 сентября 2011

Вы можете использовать базовую аутентификацию http через https.Это позволяет конечному приложению знать пользователя и, следовательно, можно выполнять авторизацию.

Эта ссылка [1] показывает, как я проделал аналогичную работу с WSO2 ESB.Но в зависимости от вашего стека может быть способ.

[1] http://wso2.org/library/articles/2011/06/securing-web-service-integration

0 голосов
/ 19 сентября 2011

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

Я чувствую, что вам нужен механизм авторизации на стороне вашего поставщика услуг.

если вы не хотите шифровать ваши сообщения soap, вы можете добавить новые параметры в soap msg. например клиент отправляет <applicationId> and <password> (или зашифрованную строку AppId, PassWord) в качестве нового параметра для WS, на стороне провайдера WS WS проверяет, имеет ли приложение право на вызов.

но это вносит изменения в реализацию клиента и службы.

Или вы можете проверить клиентский IP-адрес запроса, чтобы решить, из какого именно приложения. Если ваши приложения имеют фиксированные IP-адреса.

...