- 浏览: 316627 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
完善自我:
支持一下!
揭秘IT人才特点:中美印日四国程序员比较 -
悲剧了:
好文,看玩thinking in java的提到的异常处理,看 ...
高效的Java异常处理框架(转) -
yin_bp:
开源框架bbossgroups页支持组件异步方法调用哦,详情请 ...
Spring 3中异步方法调用 -
flyjava:
sun的悲哀
Apache怒了,威胁说要离开JCP
简介: WS-SecureConversation 能让您保证正在进行的 Web 服务消息交换的安全,同时花费比普通 WS-Security 更少的处理开销。在本文中,您将学习如何配置 WS-SecureConversation 并将其用于三个主要的开源 Java™ Web 服务栈:Apache Axis2、Metro 和 Apache CXF。还将看到这三个栈的 WS-SecureConversation 性能上的对比。
WS-Security 提供了必要的特性以保证商务 Web 服务的安全,但经常会付出沉重的性能代价。在 “WS-Trust 与 WS-SecureConversation ” 中,您了解到如何在 WS-Security 和 WS-Trust 上构造 WS-SecureConversation 用对称加密来保证客户端和服务器端持续进行的消息交换的安全。本文中,您将学习如何配置 WS-SecureConversation,用于三个主要开源 Java Web 服务栈 — Apache Axis2、Metro 和 Apache CXF — 还将看到与 WS-Security 非对称加密相比,对性能的影响。
如 上篇文章 所讨论的,WS-SecureConversation 消息交换中的客户端首先连接到 Security Token Service (STS) 终端来建立安全上下文,它包含一个共享密钥。然后该共享密钥用作加密及/或与目标服务的签名消息交换。安全上下文由 Security Context Token (SCT) 确认,由 STS 返回到客户端。SCT 由客户端包含在所有对服务的请求中,作为安全对话的一部分, 并被服务在所有响应中引用。
至于普通 WS-Security,安全配置在 WS-Policy 文档中定义。当使用 WS-SecureConversation 时:两个单独的安全配置出现在服务策略中,一个用 STS 用于消息交换,另一个用于目标服务。STS 安全配置嵌在安全对话令牌的策略定义中。
本文中不同的 WS-SecureConversation 性能测试有:
- 仅签名
- 仅加密
- 签名和加密
所有情况下,都使用同样的 STS 安全配置,非对称密钥同时用于签名和加密客户端和 STS 之间数量相对较小的消息交换。清单 1 显示的是用于签名性能测试中已编辑的 WS-Policy 版本,策略应用到 STS 消息交换,以粗体显示( 查看 下载 部分获取本文例子的全部源代码):
<wsp:Policy wsu:Id="SecureConv" ...> <wsp:ExactlyOne> <wsp:All> <wsap:UsingAddressing xmlns:wsap="http://www.w3.org/2006/05/addressing/wsdl"/> <sp:SymmetricBinding> <wsp:Policy> <sp:ProtectionToken> <wsp:Policy> <sp:SecureConversationToken sp:IncludeToken=".../IncludeToken/AlwaysToRecipient"> <wsp:Policy> <sp:RequireDerivedKeys/> <sp:BootstrapPolicy> <wsp:Policy> <sp:AsymmetricBinding> <wsp:Policy> <sp:InitiatorToken> <wsp:Policy> <sp:X509Token sp:IncludeToken=".../IncludeToken/AlwaysToRecipient"> <wsp:Policy> <sp:RequireThumbprintReference/> </wsp:Policy> </sp:X509Token> </wsp:Policy> </sp:InitiatorToken> <sp:RecipientToken> <wsp:Policy> <sp:X509Token sp:IncludeToken=".../IncludeToken/AlwaysToInitiator"> <wsp:Policy> <sp:RequireThumbprintReference/> </wsp:Policy> </sp:X509Token> </wsp:Policy> </sp:RecipientToken> <sp:AlgorithmSuite> <wsp:Policy> <sp:TripleDesRsa15/> </wsp:Policy> </sp:AlgorithmSuite> <sp:Layout> <wsp:Policy> <sp:Strict/> </wsp:Policy> </sp:Layout> <sp:IncludeTimestamp/> <sp:OnlySignEntireHeadersAndBody/> </wsp:Policy> </sp:AsymmetricBinding> <sp:SignedParts> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> ... <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts> <sp:Body/> </sp:EncryptedParts> <sp:Trust13> <wsp:Policy> <sp:MustSupportIssuedTokens/> <sp:RequireClientEntropy/> <sp:RequireServerEntropy/> </wsp:Policy> </sp:Trust13> </wsp:Policy> </sp:BootstrapPolicy> </wsp:Policy> </sp:SecureConversationToken> </wsp:Policy> </sp:ProtectionToken> <sp:AlgorithmSuite> <wsp:Policy> <sp:Basic128Rsa15/> </wsp:Policy> </sp:AlgorithmSuite> <sp:Layout> <wsp:Policy> <sp:Strict/> </wsp:Policy> </sp:Layout> </wsp:Policy> </sp:SymmetricBinding> <sp:SignedParts> <sp:Body/> </sp:SignedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> |
至于 WS-Security,用于安全处理(例如密钥库和密码)的额外运行时参数必须以与实现相依赖的方式定义。使用 WS-SecureConversation 还需要 WS-Addressing(至少对于客户端和 STS 之间的对话),并确保 WS-Addressing 是另一与实现相依赖的特性。以下三节中,您将看到三个 Web 服务栈如何各自处理安全运行时参数和 WS-Addressing 使用。
WS-SecureConversation 的 Axis2 客户端配置与所有 WS-Security 用法基本相同。如果与 STS 的消息交换使用非对称加密,客户端必须在策略中包含 <ramp:RampartConfig>
元素以提供安全运行时参数。Rampart 配置信息在 STS 和服务自身之间共享。
清单 2 显示本文中性能测试中用到的 Rampart 客户端配置。这与此前文章中 WS-Security 非对称签名和加密的 Axis2 例子中的配置一致。
清单 2. 策略中的 Axis2/Rampart 客户端配置
<wsp:Policy ...> <wsp:ExactlyOne> <wsp:All> ... <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> <ramp:user>clientkey</ramp:user> <ramp:encryptionUser>serverkey</ramp:encryptionUser> <ramp:passwordCallbackClass >com.sosnoski.ws.seismic.adb.PWCBHandler</ramp:passwordCallbackClass> <ramp:signatureCrypto> <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"> <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type" >JKS</ramp:property> <ramp:property name="org.apache.ws.security.crypto.merlin.file" >client.keystore</ramp:property> <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password" >nosecret</ramp:property> </ramp:crypto> </ramp:signatureCrypto> <ramp:encryptionCrypto> <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"> <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type" >JKS</ramp:property> <ramp:property name="org.apache.ws.security.crypto.merlin.file" >client.keystore</ramp:property> <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password" >nosecret</ramp:property> </ramp:crypto> </ramp:encryptionCrypto> </ramp:RampartConfig> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> |
清单 3 显示的是用于配置 Rampart 和激活 WS-Addressing 的 Axis2 客户端代码。Rampart 配置使用此前 Axis2 例子中同样的代码,除了在粗体行中添加了通过启用 addressing
模块激活 WS-Addressing。
Options options = client.getOptions(); options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy); client.engageModule("addressing"); client.engageModule("rampart"); |
Axis2 服务器配置包含在服务档案 (AAR) 文件的 META-INF/services.xml 文件中。至于 Axis2 客户端,基本的 Rampart 配置与之前 WS-Security 非对称和加密的 Axis2 例子中一致。激活服务的 STS 还需要补充一些东西,如清单 4 中已编辑版本的粗体部分:
清单 4. Axis2 服务器 services.xml 添加项
<serviceGroup> <service name="seismic-signencr"> ... <module ref="rampart"/> <module ref="rahas"/> <module ref="addressing"/> ; <wsp:Policy xmlns:sp=".../ws-sx/ws-securitypolicy/200702" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu=".../oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecureConv"> <wsp:ExactlyOne> <wsp:All> <wsap:UsingAddressing xmlns:wsap="http://www.w3.org/2006/05/addressing/wsdl"/> <sp:SymmetricBinding> ... </sp:SymmetricBinding> ... <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> <ramp:user>serverkey</ramp:user> <ramp:encryptionUser>clientkey</ramp:encryptionUser> <ramp:passwordCallbackClass >com.sosnoski.ws.seismic.adb.PWCBHandler</ramp:passwordCallbackClass> <ramp:signatureCrypto> ... </ramp:signatureCrypto> <ramp:encryptionCrypto> ... </ramp:encryptionCrypto> </ramp:RampartConfig> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <parameter name="sct-issuer-config"> <sct-issuer-config> <cryptoProperties> <crypto provider="org.apache.ws.security.components.crypto.Merlin"> <property name="org.apache.ws.security.crypto.merlin.keystore.type" >JKS</property> <property name="org.apache.ws.security.crypto.merlin.file" >server.keystore</property> <property name="org.apache.ws.security.crypto.merlin.keystore.password" >nosecret</property> </crypto> </cryptoProperties> <addRequestedAttachedRef/> <addRequestedUnattachedRef/> <!-- Key computation mechanism 1 - Use Request Entropy 2 - Provide Entropy 3 - Use Own Key --> <keyComputation>3</keyComputation> <!-- proofKeyType element is valid only if the keyComputation is set to 3 i.e. Use Own Key Valid values are: EncryptedKey & BinarySecret --> <proofKeyType>BinarySecret</proofKeyType> </sct-issuer-config> </parameter> <parameter name="token-canceler-config"> <token-canceler-config/> </parameter> </service> </serviceGroup> |
清单 4
中的第一个添加项是一对 rahas
和 addressing
的模块引用。rahas
模块是对基本 Rampart 支持的配置添加项,用于激活服务的 STS。addressing
模块激活 WS-Addressing 支持,如 清单 3
客户端代码所示。
清单 4
中第二个添加项是 <parameter name="sct-issuer-config">
元素和内容。这将配置 STS 以特殊方式发布 SCT。内容中的注释是直接从 Rampart 例中拿过来的;这似乎是这项配置的惟一文档。不幸的是,注释并不准确:在 Axis2 1.5.1/Rampart 1.5 实际测试中,改变 <keyComputation>
值不会影响 STS 操作,它始终会生成一个键并直接返回给客户端。这不符合所采用的策略,它需要客户端和服务器熵合起来生成共享密钥。
配置 CXF 的 WS-SecureConversation 比 Axis2 方法更简单。在客户端,所要做的就是向客户端使用的 cxf.xml 文件添加安全运行时参数。同样方法可用于常规 WS-Security 的参数,只要用不同的参数名(都以后缀 .sct
结尾)。清单 5 显示的是本文测试中使用的 cxf.xml,SCT 参数粗体显示:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <jaxws:client name="{http://ws.sosnoski.com/seismic/wsdl}seismic" createdFromAPI="true"> <jaxws:properties> <entry key="ws-security.signature.properties.sct" value="client-crypto.properties"/> <entry key="ws-security.signature.username.sct" value="clientkey"/> <entry key="ws-security.encryption.properties.sct" value="client-crypto.properties"/> <entry key="ws-security.encryption.username.sct" value="serverkey"/> <entry key="ws-security.callback-handler.sct" value="com.sosnoski.ws.seismic.cxf.ClientCallback"/> </jaxws:properties> </jaxws:client> </beans> |
CXF 中服务器端的配置也很简单,但需要改变定义 CXF 上下文配置的 web.xml 文件和给出单个服务定义的 cxf-servlet.xml 文件。web.xml 文件,如清单 6 所示,添加了一行引用 cxf-extension-addr.xml
配置。加入的引用中包含 CXF 配置的 WS-Addressing 支持,这是客户端和 STS 之间交换消息所需的(还用于客户端和实际服务的消息交换,使用的是 清单 1
策略)。
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"> <display-name>CXFLibrary</display-name> <description>CXF Seismic Service</description> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:META-INF/cxf/cxf.xml classpath:META-INF/cxf/cxf-extension-soap.xml classpath:META-INF/cxf/cxf-servlet.xml classpath:META-INF/cxf/cxf-extension-policy.xml classpath:META-INF/cxf/cxf-extension-ws-security.xml classpath:META-INF/cxf/cxf-extension-http.xml classpath:META-INF/cxf/cxf-extension-addr.xml </param-value> </context-param> <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app> |
清单 7 显示的是 cxf-servlet.xml 配置文件,其中一组 SCT 参数定义对应 清单 5 中客户端部分:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:soap="http://cxf.apache.org/bindings/soap" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <jaxws:endpoint id="Processor" implementor="com.sosnoski.ws.seismic.cxf.CxfSeismicImpl" wsdlLocation="WEB-INF/wsdl/seismic.wsdl" address="/"> <jaxws:properties> <entry key="ws-security.signature.properties.sct" value="server-crypto.properties"/> <entry key="ws-security.signature.username.sct" value="serverkey"/> <entry key="ws-security.encryption.username.sct" value="useReqSigCert"/> <entry key="ws-security.callback-handler.sct" value="com.sosnoski.ws.seismic.cxf.ServerCallback"/> </jaxws:properties> </jaxws:endpoint> </beans>
Metro 与 Axis2 一样将自定义内容添加到安全策略来传递运行时参数。还是与 Axis2 一样,传递给 WS-SecureConversation 的参数与 WS-Security 的方式一样。与 Axis2 不同的是,Metro 不需要在服务器添加额外的 STS 配置,这使得 Metro 配置比 Axis2 简单得多。
清单 8 显示的是已编辑过的客户端 WSDL,其中 Metro 安全运行时参数以粗体显示:
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" ...> <wsp:Policy xmlns:sp=".../ws-sx/ws-securitypolicy/200702" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu=".../oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecureConv"> <wsp:ExactlyOne> <wsp:All> <wsap:UsingAddressing xmlns:wsap="http://www.w3.org/2006/05/addressing/wsdl"/> <sp:SymmetricBinding> ... </sp:SymmetricBinding> ... <wssc:KeyStore alias="clientkey" keypass="clientpass" location="client.keystore" storepass="nosecret" xmlns:wspp="http://java.sun.com/xml/ns/wsit/policy" wspp:visibility="private" xmlns:wssc="http://schemas.sun.com/2006/03/wss/client"/> <wssc:TrustStore location="client.keystore" peeralias="serverkey" storepass="nosecret" xmlns:wspp="http://java.sun.com/xml/ns/wsit/policy" wspp:visibility="private" xmlns:wssc="http://schemas.sun.com/2006/03/wss/client"/> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> ... <wsdl:service name="SeismicMetro"> <wsdl:port binding="wns:SeismicBinding" name="seismic"> <soap:address location="http://localhost:8080/metro-seismic"/> </wsdl:port> </wsdl:service> </wsdl:definitions> |
清单 9 显示的是服务器端 WSDL,运行时参数也是粗体:
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" ...> <wsp:Policy xmlns:sp=".../ws-sx/ws-securitypolicy/200702" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu=".../oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecureConv"> <wsp:ExactlyOne> <wsp:All> <wsap:UsingAddressing xmlns:wsap="http://www.w3.org/2006/05/addressing/wsdl"/> <sp:SymmetricBinding> ... </sp:SymmetricBinding> ... <wsss:KeyStore alias="serverkey" keypass="com.sosnoski.ws.seismic.metro.KeystoreAccess" location="server.keystore" storepass="nosecret" xmlns:wspp="http://java.sun.com/xml/ns/wsit/policy" wspp:visibility="private" xmlns:wsss="http://schemas.sun.com/2006/03/wss/server"/> <wsss:TrustStore location="server.keystore" storepass="nosecret" xmlns:wspp="http://java.sun.com/xml/ns/wsit/policy" wspp:visibility="private" xmlns:wsss="http://schemas.sun.com/2006/03/wss/server"/> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> ... <wsdl:service name="SeismicMetro"> <wsdl:port binding="wns:SeismicBinding" name="seismic"> <soap:address location="http://localhost:8080/metro-seismic"/> </wsdl:port> </wsdl:service> </wsdl:definitions> |
STS 配置其余部分直接从通用策略中取得。
性能比较采用与之前文章一样的测试代码,地震数据检索服务。服务使用的是几年中发生的超过 93,000 次地震的数据库。服务请求指定时间范围和地理坐标范围,服务返回指定范围内的所有地震。见 “WS-Security 的大开销 ”,其中详细介绍测试应用程序和请求/响应消息示例。
如此前文章所述,有两组请求序列用于性能测试。第一组使用 1,000 次请求,查询参数设置为整个地震数据库的一小部分(1,000 次请求返回 816 次匹配的地震)。第二组使用 100 次请求,设置为匹配数据库的较大部分(100 次请求返回 176,745 次匹配地震)。这两个请求序列强调不同的网络服务堆栈的性能特点。第一个显示栈处理少量数据的请求有多快,第二个强调处理大量数据的速度。每个请求序列在 不同安全配置下运行多次,结果取每种配置下的最好成绩。测试的安全配置如下:
- 无安全(plain )
- WS-SecureConversation 对所有请求/响应消息主体签名(sign )
- WS-SecureConversation 对所有请求/响应消息主体加密(encr )
- WS-SecureConversation 对所有请求/响应消息主体加密签名并加密(signencr )
测试是在 Mandriva 2009.1 64-bit Linux 系统,Athlon X2 5400+ 处理器和 4GB RAM 上运行,使用的是 Sun (Oracle) Java 1.6.0_18 32-bit JVM(对于给定的堆尺寸,它性能比 64-bit JVM 好得多)。服务器代码运行在 Tomcat 6.0.20 上,配置为使用 1024MB 的堆,客户端代码使用 512MB 堆。测试的 web 服务栈版本是:
- Axis2 1.5.1 与 Rampart 1.5 发行版
- Metro 2.0
- CXF 2.1.8
如果您想在自己的硬件和 JVM 上测试,请查看 下载 ,获取代码。
图 1 显示的是小响应测试系列的测出次数。与 前一组测试 中的表现一样,Metro 在无安全运行时处理这些小消息比 Axis2 和 CXF 快一点,并且这种优势延续到使用 WS-SecureConversation 的测试。总的来说,Metro 在这个小响应系列中比 CXF 快 25%,是 Axis2 的两倍。( 在本文图表中,更短的指示条更好,这表示更快。)
图 2 显示的是小响应系列的测出次数。Metro 还是其中最快的,但不如小响应测试中明显。本例中,CXF 实际上在所有配置中与 Metro 一样,除了 WS-SecureConversation 用于仅签名时。Metro 和 CXF 在所有 WS-SecureConversation 中都比 Axis2 快(快超过 40% )。
WS-SecureConversation 的一个优势是使用对称加密比使用非对称加密更能取得性能收益。以下三张图片显示实际是如何达到的。对比每个栈使用 WS-Security 及私钥和证书(非对称加密),以及同样的栈使用 WS-SecureConversation 与密钥(对称加密)运行测试的次数。WS-Security 次数从 “CXF 性能比较 ” 中获取,在同样的硬件和几乎一样的 web 服务栈上运行。(只有 CXF 版本不一样。)由于 WS-Security 测试次数不包括仅加密配置(不支持使用证书),只比较签名与签名加密测试。
图 3 比较了 Axis 2 次数:
图 4 比较了 Metro 次数:
图 5 比较了 CXF 次数:
这三张图显示了类似的模式。在小响应中使用 WS-SecureConversation 对称加密的仅签名测试结果要快得多,但当返回大响应时,其优势丧失。在大响应中使用 WS-SecureConversation 对称加密的签名加密测试获得较大性能收益(甚至比仅签名结果更好),但在大响应中明显偏小。
这说明什么?签名消息总是包含预处理,将 XML 转换成标准格式。完成之后,XML 被翻译生成 hash 值。hash 值最终包含在实际签名中,生成的签名是非对称与对称仅有的不同之处。另一方面,加密消息,只对所有 XML 进行小修改。
这就解释了以上结果。当使用非对称加密对很多消息签名时,大多数处理时间花在签名上。如果对大消息签名,更多的时间花在规范化和消化步骤上。对称加密总是比非对称加密快(对大致相当的强度而言),但对签名和加密都有的情况,收益就平均了。
WS-SecureConversation 能提供大幅性能收益 — 小响应测试中超过双倍 — 对于持续进行的消息交换,与使用私钥证书对 WS-Security 非对称加密对比而言。当授权服务客户端时,收益会更大,这是因为授权步骤在 STS 中处理而不是在对服务的单个请求中处理。
为了能获取收益,WS-SecureConversation 需要正在持续的消息序列处于相对较短时间内。如果用于客户端一次性访问的服务,由于客户端和 STS 之间消息交换的原因,实际是增加了开销。
WS-SecureConversation 支持的交互性可能不如普通 WS-Security。我将在本系列的后续文章中详述。但在下个月的专栏中,我们将首先讨论使用对称加密及常规 WS-Security。
本文源代码 | j-jws16-src.zip | 4.87MB | HTTP |
学习
-
Axis2
:Axis 2 是 Apache Software Foundation 的 web 服务栈。
-
Metro
:Metro 是开源 web 服务栈,结合了 JAXB 2.x 和 JAX-WS 2.x Java 标准的最新参考实现。
-
CXF
:CXF 是 Apache 的另一个开源 web 服务栈。
-
WSS4J
:WSS4J 是 Apache Software Foundation 的 WS-Security 的开源实现,被 Axis2 和 CXF 用于 WS-Security 处理。
-
XWSS
:XWSS 是进行 WS-SecurityPolicy 处理的 Metro 组件。
-
了解 Web 服务规范
:本系列教程介绍了许多重要的 Web 服务标准,包括:
- “了解 Web 服务规范:Web 服务描述语言(WSDL) ”(Nicholas Chase,developerWorks,2006 年 7 月)
- “了解 Web 服务规范:WS-Security ”(Nicholas Chase,developerWorks,2006 年 8 月)
- “了解 Web 服务规范:WS-Policy ”(Tyler Anderson, developerWorks,2007 年 2 月)
-
OASIS Web Services Security (WSS) TC
:该组织负责 WS-Security 规范和令牌配置文件。您可以从这里找到这些标准的所有版本的链接。
-
The W3C Web Services Policy Working Group
:该工作组定义了 WS-Policy 规范。
-
OASIS Web Services Secure Exchange (WS-SX) TC
:该组织负责 WS-SecurityPolicy、WS-SecureConversation 和 WS-Trust。
- developerWorks Java 技术专区 :这里有数百篇关于 Java 编程各个方面的文章。
原文: http://www.ibm.com/developerworks/cn/java/j-jws16/index.html?ca=drs-
发表评论
-
WS-I闭关,这对WS-*意味着什么?
2010-11-15 21:19 951观点 :Web Services互操作组织(WS-I) 刚 ... -
EDA 和 SOA 的融合以及实践
2010-11-08 09:55 1037EDA 和 SOA SOA 简介 ... -
REST vs. SOAP
2010-11-04 17:08 1790看起来在web API协议之争(如果曾经有过)中,潮流正稳步的 ... -
SOA分析和设计中的错误处理要点
2010-10-24 23:51 1079在SOA分析和设计阶段进行全面的错误处理需求分析对于正确完成设 ... -
WebSphere Message Broker 开发和部署最佳实践
2010-10-23 18:24 2324简介: 本文以多个客户企业的经验为基础,给出了使用 Web ... -
带附件的 SOAP 消息
2010-09-30 15:16 1317简介: 本 文介绍了一种在 MIME Multipa ... -
利用 Geronimo 2.2 创建安全的 Web Service 应用
2010-09-30 14:49 1017简介: 随着 Web Service ... -
大学内的云计算解决方案
2010-09-29 14:16 1730本文通过使用一个 Virtual Computing Lab ... -
整合 WebSphere ILOG JRules 与 IBM Content Manager Enterprise Edition
2010-09-28 10:30 2194简介: 自动决策在内 ... -
评估企业是否适合开发复合业务服务
2010-09-27 17:01 1064本文介绍如何评估一个 ... -
集成 IBM 元数据存储库,第 2 部分: 在 WebSphere Service Registry and Repository 中治理元数据生命周期
2010-09-27 16:55 1097通过将您的应用程序与 IBM® Rational® Asset ... -
集成 IBM 元数据存储库,第 1 部: APIs for accessing Rational Asset Manager
2010-09-27 16:52 962通过将您的应用程序与 IBM® Rational® Asset ... -
不使用客户端证书的 WS-Security
2010-09-27 15:42 1345许多 WS-Security 配置要 ... -
CXF 性能比较
2010-09-27 15:15 1681Apache CXF Web 服务栈建立在与本系列早期文章讨论 ... -
通过 CXF 使用 WS-Security
2010-09-27 15:11 2777与 本系列 前面的文章 ... -
CXF 简介
2010-09-27 15:07 4343Apache CXF Web 服务堆栈是来自 Apache ... -
比较 Metro 与 Axis2 性能
2010-09-27 15:04 1137Metro Web 服务堆栈是基于 ... -
Metro 服务下的 WS-Security
2010-09-27 15:00 1305本文展示如何通过 Metro 来使用和配置 WS-Securi ... -
Metro 简介
2010-09-27 14:52 1986Metro Web 服务栈是由 Sun M ... -
Axis2 中的 JAXB 和 JAX-WS
2010-09-27 10:38 1708早期的 Apache Axis 建立在第一个面向 Web 服务 ...
相关推荐
【描述】该描述指出,这个项目是关于如何使用Apache CXF,一个开源的Java框架,来构建和部署SOAP Web服务,并且结合WS-Security标准进行安全增强。WS-Security(Web Services Security)是一种用于保护Web服务通信的...
`ws-security`和`wss4j`就是两个关键的库,它们专注于为基于SOAP的Web服务提供安全支持。这两个组件主要涉及到WS-Security(Web Services Security)规范,该规范定义了一套标准来确保Web服务消息的机密性、完整性和...
JAX-WS API,用于Web服务开发 WSDL优先工具 Java优先支持 JAX-RS (JSR 311 1.0) API,用于RESTfulWeb服务开发 JavaScript编程模型,用于客户端和服务端开发 Maven工具 支持CORBA HTTP和JMS传输层 可嵌入的...
此外,WS-Security家族还包括了WS-SecureConversation、WS-Federation、WS-Authorization、WS-Policy、WS-Trust和WS-Privacy等一系列子规范,这些规范共同构建了一个完整的Web Service安全框架,以满足不同场景下的...
- **JAX-WS 2.1**:JAX-WS (Java API for XML Web Services) 是用于开发基于 SOAP 的 Web 服务的 Java API。JAX-WS 2.1 增强了对 Web 服务的支持,并且与 JSR-109 密切集成,简化了 Web 服务的开发和部署。 - **JAXB...
实现Web服务通常涉及创建WSDL文件、编写服务端代码(如Java的JAX-WS或.NET的WCF)和部署服务。在客户端,开发者可以使用工具自动生成代理类来调用服务。例如,Java中的JAX-WS提供了wsimport工具,.NET中的svcutil....
- **JAX-WS**(Java API for XML Web Services):Java平台上的Web服务标准,用于创建和消费SOAP Web服务。 - **.NET Framework**:微软提供的开发环境,支持创建和使用Web服务,包括WCF(Windows Communication ...
- **Web 服务元数据(JSR-181)**:介绍了 Java 平台上的 Web 服务元数据规范 JSR-181,以及它如何帮助开发者更好地理解和管理 Web 服务接口。 - **企业 Web 服务 1.1**:讨论了企业级 Web 服务的需求及其技术特性,...
6. **安全与互操作性**:CXF支持多种安全标准,如WS-Security、WS-Trust和WS-SecureConversation,确保Web服务的安全传输。同时,它也实现了WS-I Basic Profile,提高了跨平台的互操作性。 7. **集成环境**:Apache...
6. **安全特性**:CXF包含了对WS-Security、WS-Trust、WS-SecureConversation等安全标准的支持,帮助开发者构建安全的Web服务。 7. **传输和编码**:CXF支持多种传输方式,如HTTP、HTTPS、JMS等,以及各种编码方式...
Java API for XML Web Services (JAX-WS) 提供了一种编写和调用Web服务的框架。JAX-WS 2.1进一步简化了Web服务的开发过程,支持更多的Web服务标准。 ##### 4.3 JAXB 2.1 Java Architecture for XML Binding (JAXB)...
2. **WS-安全组件**:实现了WS-Security、WS-Trust、WS-SecureConversation等规范,为Web服务提供安全特性,如身份验证、加密和消息完整性。 3. **WS-地址和事务组件**:支持WS-Addressing和WS-Transaction,允许...
Web Services Standards Support: CXF supports a variety of web service standards including SOAP, the Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security, WS-SecurityPolicy,...
- **WS-Security**:支持Web服务安全标准,如WS-SecureConversation和WS-Trust,确保服务的安全性。 - **数据绑定**:CXF支持多种数据绑定机制,如JAXB、Aegis等,方便处理XML和Java对象之间的转换。 - **MTOM/XOP**...
【CXF WSSCEURITRY 身份认证demo】是一个关于在WEB服务中使用Apache CXF框架实现WS-Security(Web Services Security)标准的身份验证的示例项目。该示例着重展示了如何在CXF中配置和使用WS-SecureConversation(WS-...
它包括WS-SecureConversation、WS-Trust、WS-Federation等子标准,可以支持消息完整性、消息加密和单点登录等功能。 9. Ws-Addressing:Ws-Addressing是一种SOAP消息头的规范,用于在消息中指定SOAP消息的目的地和...
2. **JAX-WS**:JAX-WS是Java平台上的Web服务标准,提供了一种在Java应用程序中创建和消费Web服务的简单方式。Apache CXF提供了对JAX-WS的强大支持,包括自动WSDL生成、服务发布、客户端生成等。 3. **WSDL**:WSDL...
CXF允许开发者以多种方式创建和消费Web服务,包括使用Java API for RESTful Web Services (JAX-RS) 和 Java API for XML Web Services (JAX-WS)。 **CXF的主要特点:** 1. **全面的Web服务支持**:CXF提供了对WS-*...
- **Rampart**:提供Web服务安全功能,如WS-Security、WS-Trust和WS-SecureConversation。 - **Neethi**:用于处理WS-Policy,定义服务的安全、可靠性和事务策略。 - **WSDL工具**:用于生成和处理WSDL文档,这是...