4

我们的团队正在使用 Spring-WS 和 XWSS 实现基于 SOAP 的 Web 服务。到目前为止,我们一直依赖 Spring-WS 从我们的 XSD 生成 WSDL。我们现在正在考虑是使用 WS-SecurityPolicy 在 WSDL 中记录安全需求,还是在单独的文档中传达它们。以下是我们正在思考的问题:

  • 什么是常态?将策略放在 WSDL 中是否常见?

  • 许多(任何?)客户端生成器在 WSDL 中获取 WS-SecurityPolicy 信息吗?

  • Spring-WS 在生成 WSDL 时不支持 WS-SecurityPolicy。切换到 Apache CXF 对我们有帮助吗?

此外,我们知道 REST 越来越受欢迎,但 SOAP 已被当权者指定。谢谢!

4

2 回答 2

1

希望这仍然可以帮助任何人。

什么是常态?将策略放在 WSDL 中是否常见?

是的,这很常见。

许多(任何?)客户端生成器在 WSDL 中获取 WS-SecurityPolicy 信息吗?

我不知道很多,我使用 Metro,它确实会根据安全约束生成客户端。

于 2011-05-19T13:19:47.223 回答
1

所以这就是你可以做的,而且很简单:

1) 在您的项目中包含 cxf-bundle 库。如果你使用 maven,你可以这样做:

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

2)在这里阅读如何从 wsdl 生成 java 类。

3) 确保在 pom 文件中,指向正确的 wsdlLocation 以从 wsdl 生成 java 文件。

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-bundle 并没有使用 cxf 中的其他任何东西,它有效!早些时候它不起作用,因为我单独包含了来自 cxf 的库。

希望有帮助!!

于 2018-02-16T20:57:51.797 回答