- 浏览: 111094 次
- 来自: ...
文章分类
最新评论
检验了一下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的一个缺陷
发表评论
-
The Object Primer
2004-12-11 11:21 5501,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 725错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 559前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 540前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 42714.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 609同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 572有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 570设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 623关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 667交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 578整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 778一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 709事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 779经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 706BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6161, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 680读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 715十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 666Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 590Event BusinessWare是一个事件驱动的系统 ...
相关推荐
COM and.NET Interoperability
COM and .NET Interoperability.pdf
Beginning WF: Windows Workflow in .NET 4.0 (Expert's Voice in .Net) 500 pages Publisher: Apress; 1 edition (March 19, 2010) Language: English ISBN-10: 1430224851 ISBN-13: 978-1430224853 What ...
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 ...
本文档介绍了将在WS3中针对CENELEC-A频段,FCC频段和ARIB频段的G3-PLC协议的MAC层上的新用户执行的测试过程和互操作性套件。
Guidelines for Implementation: DASH-IF Interoperability Points
.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:...
Migrating to .NET: A Pragmatic Path to Visual Basic .NET, Visual C++ .NET, and ASP.NET Find out how to migrate your legacy software to the powerful Microsoft .NET framework Provides for a complete,...
Chapter 19 - Mapped Objects: Performance Considerations and Data Binding Chapter 20 - COM Interoperability and ADO.NET Chapter 21 - Messaging Chapter 22 - SQL Server and ADO.NET: Notes ...
04-2017-Interoperability-ORIGINAL-White-Paper-Final-Musa-and-Shashank-1.pdf
* Using COM Components Within the .NET Framework * Using .NET Framework Components from COM * Designing Good .NET Framework Components for COM Clients * Designing Good COM Components for .NET ...
6 - 3.1 Interoperability Testing ver 0.98 w USB Type-C
6 - 3.1 Interoperability Testing ver 0.98 w USB Type-C.zip
电子病案标准化工作新进展 --Interoperability Profile: Clinical Laboratory Test ResultsSharing Chinese EHR Steering Committee of MOH
IEEE Std 2030.102.1-2020 Interoperability of Internet Protocol S
开放式元宇宙互操作性协议 注意:元宇宙适用于每个人,因此我们相信任何人都可以增加价值。 如果您发现改善我们工作的机会,请潜入。无论您是否可以编写代码,这都比我们所有人都大。 开放库存项目(需要新名称)是...
Business Process Management and WS-BPEL 2.0 <br>INTRODUCTION Customer business processes span services and human activities; these processes need to be orchestrated in an agile fashion ...
ISO C/C++ 和 Fortran 互操作性示例这是一组代码示例,展示了如何将 Fortran 9x/2003 代码合并到 C/C++ 和 Exelis IDL 中。这里有什么? 您将需要整个存储库才能运行所有演示。 公共文件夹包含“convert_units_lib....
Solid Data互操作性面板目的我们必须能够支持跨应用程序的数据互操作性,同时使用直观的数据边界实现安全的协作和查询。 不同实体和应用程序将访问和操纵相同数据的方式的多样性加剧了对可靠机制的需求,这些机制可...
<br> Practical, useful information on the .NET Framework, the Common Language Runtime, ADO.NET, ASP.NET, Web Services, security, interoperability, and more <br>Running case study: see how ...