以编程方式在 wsdl 中添加 wsp:policy
Adding wsp:policy in wsdl programmatically
如何在我尝试为我的 SOAP Web 服务创建的 wsdl
文档中添加安全策略 wsp:Policy
?
<wsp:Policy wsu:Id="UserNameWSTrustBinding_IWSTrust13Async_policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>...</wsp:Policy>
</sp:TransportBinding>
<sp:SignedEncryptedSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>...</wsp:Policy>
</sp:SignedEncryptedSupportingTokens>
<sp:EndorsingSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>...</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">...</sp:Wss11>
<sp:Trust13 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">...</sp:Trust13>
<wsaw:UsingAddressing/>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
我将 JAX-WS 与 Spring 一起用于构建 SOAP Web 服务。部分服务还提供元数据,这主要是我通过使用 WSDL4J
API 编写 WSDL 定义来构建的。如下所示:
WSDLFactory wsdlFactory = WSDLFactory.newInstance();
Definition definition = wsdlFactory.newDefinition();
// Namespaces
setNamespaces(definition);
// Policy
setPolicy(definition);
// Messages - Input
setInputMessageForWSDLDefinition(definition);
// Messages - Output
setOutputMessageForWSDLDefinition(definition);
// PortType
setPortTypeForWSDLDefinition(definition);
// Binding
setBindingForWSDLDefinition(definition);
// Service
setServiceForWSDLDefinition(definition, singleSignOnService);
这就是我向 wsdl 添加策略的方式
@Policies(
{ @Policy(uri = "classpath:SecurityPolicy.xml") })
apache-cxf
提供此功能以将策略添加到 wsdl
如何在我尝试为我的 SOAP Web 服务创建的 wsdl
文档中添加安全策略 wsp:Policy
?
<wsp:Policy wsu:Id="UserNameWSTrustBinding_IWSTrust13Async_policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>...</wsp:Policy>
</sp:TransportBinding>
<sp:SignedEncryptedSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>...</wsp:Policy>
</sp:SignedEncryptedSupportingTokens>
<sp:EndorsingSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wsp:Policy>...</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss11 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">...</sp:Wss11>
<sp:Trust13 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">...</sp:Trust13>
<wsaw:UsingAddressing/>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
我将 JAX-WS 与 Spring 一起用于构建 SOAP Web 服务。部分服务还提供元数据,这主要是我通过使用 WSDL4J
API 编写 WSDL 定义来构建的。如下所示:
WSDLFactory wsdlFactory = WSDLFactory.newInstance();
Definition definition = wsdlFactory.newDefinition();
// Namespaces
setNamespaces(definition);
// Policy
setPolicy(definition);
// Messages - Input
setInputMessageForWSDLDefinition(definition);
// Messages - Output
setOutputMessageForWSDLDefinition(definition);
// PortType
setPortTypeForWSDLDefinition(definition);
// Binding
setBindingForWSDLDefinition(definition);
// Service
setServiceForWSDLDefinition(definition, singleSignOnService);
这就是我向 wsdl 添加策略的方式
@Policies(
{ @Policy(uri = "classpath:SecurityPolicy.xml") })
apache-cxf
提供此功能以将策略添加到 wsdl