2010-07-02 5 views
4

Наша команда реализует веб-службы на основе SOAP, используя Spring-WS и XWSS. До сих пор мы полагались на Spring-WS для создания WSDL из наших XSD. Теперь мы рассматриваем вопрос о том, следует ли документировать требования безопасности в WSDL с использованием WS-SecurityPolicy или передавать их в отдельный документ. Вот вопросы, которые мы обдумываем:Общепринятой практикой является указание информации о политике безопасности в WSDL?

  • Что такое норма? Обычно ли распространять политику в WSDL?

  • Запрашивают ли многие (какие-либо?) Генераторы клиентов WS-SecurityPolicy в WSDL?

  • Spring-WS не поддерживает WS-SecurityPolicy при создании WSDL. Переключение на Apache CXF поможет нам?

Кроме того, мы знаем, что REST набирает популярность, но SOAP обозначается полномочиями. Благодаря!

ответ

1

Надеюсь, это все равно поможет любому.

Какая норма? Является ли распространенным правило в WSDL?

Да, это распространено.

У многих (любых?) Генераторов клиентов выбирают информацию WS-SecurityPolicy в WSDL?

Я не знаю о многих, я использую метро, ​​и он создает клиентов в соответствии с ограничениями безопасности.

0

Так вот что вы можете сделать, и это очень просто:

1) Включить CXF-расслоение библиотеки в вашем проекте. Если вы используете Maven, вы можете сделать это:

<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-bundle</artifactId> 
    <version>2.7.18</version> 
</dependency> 

2) Прочитайте here как генерировать классы Java из WSDL.

3) Убедитесь, что в файле pom вы указываете правильную wsdlLocation для генерации java-файлов из wsdl.

4) Инициализируйте созданного клиента и введите имя пользователя и пароль, предоставленные вам. Что-то вроде этого:

final YourService service = new YourService(); 
final YourStub stub = service.getService(); 

final Map ctx = ((BindingProvider)stub).getRequestContext(); 

ctx.put("ws-security.username", userName); 
ctx.put("ws-security.password", password); 

stub.callYourMethod(); 

PS: Пожалуйста, убедитесь, что у вас есть правильные библиотеки, я просто использовал CxF-расслоение, и ничего от CXF и это сработало! Раньше он не работал, поскольку я отдельно включал библиотеки cxf.

Надеюсь, что поможет!