2011-09-19 1 views
4

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

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

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

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

Любая идея?

Благодаря

ответ

0

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

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

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

, но это вносит изменения в реализацию Клиента и Сервиса.

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

1

вы можете использовать http basic authentication over https. Он позволяет обратному приложению узнать пользователя и, следовательно, сделать авторизацию.

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

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

2

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

Для этого вам необходимо обеспечить безопасность транспортного уровня.

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

Другой вариант есть ..

  1. Базовая проверка подлинности по протоколу HTTPS
  2. 2 ноги OAuth

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

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