`
chelsea
  • 浏览: 117785 次
  • 来自: ...
社区版块
存档分类
最新评论

WS-Security Interoperability Issues: WebSphere, JBoss, Axis and .Net

    博客分类:
 
阅读更多

 

检验了一下WS-Security的互操作情况,涉及到了4种WSS开发包:Websphere Web Services 1.0, JBossWS 1.0.2, WSS4J 1.5.0, WSE 3.0. 总体来说,JBossWS是功能最弱的一种,但配置最简单,Websphere Web Services是功能最强的一种,但配置最复杂;WSS4J和WSE介于两者之间

 

问题一:客户端用Websphere Web Services,服务端用JBossWS,使用UsernameToken时,<wsse:UsernameToken>缺了wsu:Id属性,JBoss会用异常来抱怨:

<wsse:UsernameToken xmlns:wsse="...">

<wsse:Username xmlns:wsse="...">ibm</wsse:Username>

<wsse:Password Type="..." xmlns:wsse="...">was</wsse:Password>

</wsse:UsernameToken>

org.jboss.ws.wsse.WSSecurityException: Invalid message, UsernameToken is missing an id at org.jboss.ws.wsse.element.UsernameToken.<init>(UsernameToken.java:60)

除Websphere Web Services外,其它3种开发包缺省都会为<wsse:UsernameToken>提供wsu:Id属性,除了JBossWS外,其它3种开发包都能处理<wsse:UsernameToken>不带wsu:Id属性的情况

 

问题二:客户端用Websphere Web Services,服务端用JBossWS,使用加密时,<EncryptionMethod>缺了显式的XML namespace 声明,JBoss会用异常来抱怨:

<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">

<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />....<..>

</EncryptedKey>

 

<EncryptedData Id="wssecurity_encryption_id_3" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns="http://www.w3.org/2001/04/xmlenc#">

<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />....<..>

</EncryptedData>

org.jboss.ws.WSException: Content root name does not match element name: EncryptionMethod != {http://www.w3.org/2001/04/xmlenc#}EncryptionMethod at org.jboss.ws.soap.SOAPContentElement.expandToDOM(SOAPContentElement.java:818)

来看一下完整正确的SOAP片断(显式声明的xml名称空间):

<xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">

<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" />...<...>..

</xenc:EncryptedKey>

 

<xenc:EncryptedData Id="..." Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">

<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" />..<..>..

</xenc:EncryptedData>

除Websphere Web Services外,其它3种开发包缺省都会为<EncryptionMethod>提供显式的名称空间声明,除了JBossWS外,其它3种开发包都能处理<EncryptionMethod> without explicit namespace

 

问题三:JBossWS只支持DirectReference或说StraightReference的SecurityTokenReference,不支持KeyID, KeyName, X509Issuer, Embeded等方式,所以同时应用签名和加密的时候,就会出现两个<BinarySecurityToken>,这样另一方尤其是 .Net WSE就会晕菜了:<Header>中有两个Token,但是只期待一个

当然,这是通过WSE Tools选择了Certificate认证模式的结果,如果选择Anonymous,.Net会正确的处理带有多个BinarySecurityToken的SOAP请求,只不过Anonymous模式会掺杂进WSS1.1的特性:它产生的导致JBossWS晕菜的Response是这样的:

<wsse:SecurityTokenReference xmlns:wsse="..">

<wsse:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKeySHA1" EncodingType="...">6LW6sXwrPX0SSBM4nV7OqgjUiv8=</wsse:KeyIdentifier>

</wsse:SecurityTokenReference>

WS-I Basic Profile 1.0 是不支持WSS1.1的

 

问题四:JBossWS和Websphere Web Services不支持UsernameToken的PasswordDigest方式,只支持PasswordText

<!--晕菜-->

<wsse:UsernameToken xmlns:wsu="..." wsu:Id="UsernameToken-5525185">

<wsse:Username>wss4juser</wsse:Username>

<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">WhTMH9PlZsmxrwDRkjgzbxPtZgM=</wsse:Password>

</wsse:UsernameToken>

 

<!--OK-->

<wsse:UsernameToken xmlns:wsu="..." wsu:Id="UsernameToken-5525185">

<wsse:Username>wss4juser</wsse:Username>

<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">wss4jpass</wsse:Password>

</wsse:UsernameToken>

问题五:WSS4J不支持同时使用UsernameToken和Signature,如果UsernameToken的user和用于签名的X509Cert的subject不同的话

因为action="UsernameToken" 和 action="Signature" 使用相同的<parameter name="user" value="username.or.subject"/>来配置username或者subject;这是有理由的,因为UsernameToken和Signature都是用来表明自己身份的,当然Signature主要是校验SOAP消息没有被篡改;通常UsernameToken会和Encryption联合使用,或者Signature和Encryption同时使用;无论如何,这是WSS4J的一个缺陷

分享到:
评论

相关推荐

    web service standards overview

    WS-I(Web Services Interoperability Organization)发布了一系列基本配置文件,以指导开发者如何组合不同的Web服务标准来达到最佳的互操作性。 - **Basic Profile 1.1**: 该配置文件提供了实施指南,说明了如何将...

    IBM WebSphere Application Server V7.0 Web Services Guide

    - **Web Services Interoperability (WS-I)**:WS-I 是一个由行业领导者组成的组织,致力于提高 Web 服务的互操作性。它发布了一系列指南和测试工具,帮助开发者确保他们的 Web 服务能够在不同的平台和技术之间顺畅...

    JAVA中用axis编写webService时所用jar包

    2. **WS-I(Web Services Interoperability)相关JARs**:这些库确保了Web服务与其他平台和服务的互操作性。 - axis2-wsdl4j.jar:提供了对WSDL(Web服务描述语言)的支持。 - axis2-axis1-compat.jar:包含了与...

    apache axis-1.7.9

    4. **消息引擎**:Axis2的消息引擎负责处理SOAP消息,包括解析、序列化以及处理WS-I(Web Services Interoperability)规范中的各种消息模式。 5. **服务组件模型**:Axis2支持多种服务组件模型,如AAR(Axis ...

    COM and .NET Interoperability.pdf

    《COM and .NET Interoperability》这本书由Andrew Troelsen撰写,是针对新老开发者的一本深入浅出介绍COM与.NET互操作性的参考书。全书共816页,通过详尽的内容帮助读者掌握如何在实际开发工作中有效地将COM和.NET...

    web services pdf

    - **WS-I (Web Services Interoperability Organization)**:一个开放的产业组织,其宗旨是促进Web服务在不同平台、操作系统和编程语言间的互操作性。WS-I社区由Web服务领域的领导者组成,他们通过提供指导、推荐...

    OA-100BASE-T1-Interoperability-Test-Suite-V1.0-18

    OA-100BASE-T1-Interoperability-Test-Suite-V1.0-18

    axis2-1.6.1

    - WS-I(Web Services Interoperability):确保跨平台的Web服务互操作性的标准。 - JAXB(Java Architecture for XML Binding):Java到XML数据绑定的API,用于将Java对象转换为XML表示,反之亦然。 - MTOM和SwA:...

    G3-PLC - WS3 - MAC layer - Interoperability Test Process and Test Suite

    《G3-PLC - WS3 - MAC层 - 互操作性测试流程及测试套件》 本文档详细阐述了在WS3阶段针对CENELEC-A频段、FCC频段以及ARIB频段的G3-PLC协议MAC层上进行的新用户互操作性测试流程和测试套件。这些测试旨在确保不同...

    javabase64源码-java-web-services-binary:https://www.codejava.net/java-ee/

    - Java Web服务(Java Web Services)是使用Java技术栈创建的网络服务,遵循WS-I(Web Services Interoperability)标准,以XML格式交换数据,使得不同系统间可以互操作。 - 主要的Java Web服务框架有JAX-WS(Java...

    移动cmpp错误代码.pdf

    在移动通信领域中,尤其是在短信业务中,CMPP(China Mobile Point to Point Protocol)是中国移动推出的一种短信网关协议标准,它主要应用于SP(Service Provider,服务提供商)与ISMG(Interoperability Service ...

    Applied ADO.NET: Building Data-Driven Solutions(2)

    Applied ADO.NET: Building Data-Driven Solutions 第二部分 Table of Contents Applied ADO.NET—Building Data-Driven Solutions Introduction Chapter 1 - ADO.NET Basics Chapter 2 - Data Components ...

    AXIS2接口依赖jar包

    3. **WS-I兼容性**:Web Services Interoperability (WS-I) 是一套确保不同平台间Web服务互操作性的标准。AXIS2遵循这些标准,确保其创建的服务能够跨平台顺利工作。 4. **消息传输**:AXIS2支持多种传输协议,如...

    网络工程师思维导图-第四章:局域网和城域网.pdf

    8. 无线城域网技术:例如WiMAX(Worldwide Interoperability for Microwave Access)技术,是一种移动宽带无线接入技术,提供了在城域网规模上实现无线通信的能力。 9. 同步光网络(SONET)和同步数字体系(SDH):...

    COM and.NET Interoperability

    第五章和第六章分别介绍了.NET服务器的架构和.NET类型的特性。这些章节为理解.NET组件的工作原理奠定了基础,包括命名空间、类、结构、枚举、接口和属性等概念。 #### .NET到COM的互操作性 第七章至第九章详细讨论...

    axis-src-1_4.tar.gz

    此外, Axis 支持WS-Security、WS-Addressing等高级Web服务标准,增强了服务的安全性和互操作性。 6. **集成环境**: Axis 可以轻松地与各种Java应用服务器集成,如Tomcat、JBoss、WebLogic等,也可以独立运行。...

    axis2-1.5.4-bin.zip,官网下载

    - **WS-*兼容性**:遵循WS-I(Web Services Interoperability)规范,确保与其他平台的互操作性。 在实际开发中,你可以通过编写服务类并将其打包成aar文件,然后放入仓库目录来部署服务。也可以通过管理工具(如...

    axis2-1.6.4源码

    8. **WS-Security(Web Services Security)**:Axis2 提供对WS-Security标准的支持,包括消息认证、加密和签名。研究源码有助于理解如何实现安全的Web服务。 9. **互操作性(Interoperability)**:Axis2 作为SOAP...

    .NET Programming with Visual C++: Tutorial, Reference, and Immediate Solutions

    .NET Programming with Visual C++: Tutorial, Reference, and Immediate Solutions By 作者: Max Fomitchev ISBN-10 书号: 1138436399 ISBN-13 书号: 9781138436398 Edition 版本: 1 出版日期: 2017-07-27 Pages:...

    SOA标准体系白皮书 V1.0 .zip

    - **WS-I(Web Services Interoperability Organization)**:制定了一系列规范,确保不同厂商的Web服务能相互通信。 - **WS-Security**:提供了Web服务的安全框架,涵盖认证、授权、加密和完整性保护。 - **WS-...

Global site tag (gtag.js) - Google Analytics