问题标签 [wsit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
751 浏览

netbeans - WSIT,Netbeans 和 Metro JAX-WS RI 中客户端的策略设置

我们使用的 Web 服务的已发布 wsdl 有一个 Policy 标签。

但是在我们使用 wsimport 和 Netbeans 创建客户端之后,它不允许编辑 WSIT 设置的任何属性。在 Apache CXF 中,您可以通过 API 提供属性。据我们所见,对于 Metro 和 Netbeans,它需要一个带有策略属性集的 xml 文件。文档说这些属性可以通过 Web 服务客户端的设置和自动生成的 xml 进行编辑。但在我们的例子中,没有 WSIT(安全)选项卡是可访问的。

没有安全选项卡

在这里,文档介绍了属性的外观。http://metro.java.net/nonav/1.2/guide/Configuring_Security_Using_NetBeans_IDE.html#gfrds (安全选项卡)

是否有任何简单的方法可以为客户端提供消息签名、密钥库和信任库等选项(根据需要发布的服务)?

0 投票
1 回答
898 浏览

web-services - 调用 Web 服务时如何忽略 wsit-client.xml(如果存在)

我正在开发的应用程序调用了许多 Web 服务。就在最近,我集成了另一个需要 wsit-client.xml 进行 Soap 身份验证的 Web 服务。

现在可以正常工作,但所有其他 SOAP 服务都已停止工作。

每当他们中的任何一个被调用时,我都会看到类似的消息

我怀疑这是导致服​​务调用失败的原因。

对于某些soap服务调用,如何使wsit-client.xml被忽略?

谢谢

0 投票
2 回答
997 浏览

java - 从未调用 wsit 客户端密钥库回调

我正在使用 wsit 创建一个具有一些安全增强功能的网络服务客户端。为了证明一些部署规范的合理性,我不得不使用回调机制来加载密钥库:

现在根据我的日志文件,KeyStore 处理程序将被正确实例化,但永远不会被调用来创建密钥库。这意味着永远不会调用回调方法“handle(Callback[] callbacks)”。请有人给我一些提示如何更好地分析问题。

实例化的调用堆栈表明该策略已正确解析和设置。但在 SSL 握手期间,不会触发回调。

0 投票
0 回答
374 浏览

java - 从 WSDL 构建 SOAP 请求时出现无法追踪的错误

我在 Netbeans 7.3.1 中有一个 Java 应用程序,并且正在使用 awsdl创建一个SOAP Request. 我正在使用MetroWSIT签署​​请求。当我尝试构建/发送请求时,我收到以下错误:

错误日志的完整输出是:

错误日志中显示的所有类和行号都在引擎盖类下。我在连接到我的项目的错误日志中找不到任何内容。

我在网上找到了几个有关此错误的信息的论坛,但没有一个能解决我的问题。我找到的论坛可以找到here, here, 和here

如果有人能指出任何信息或教程的方向,将不胜感激。

谢谢

0 投票
0 回答
245 浏览

java - 签署 SOAP 错误 - 相互证书安全 - Metro Web 堆栈

有谁知道如何从 Metro Web 堆栈签署 SOAP 故障?

我使用 Metro Web 堆栈(完全删除了 cxf)在 JBoss 6.x 上部署了许多 Web 服务。

所有服务都在请求和响应上强制执行相互证书安全性(通过签署有效负载的主体) - 当它不是 SOAP 错误时,这可以正常工作 - 即:客户端在验证和验证签名时没有问题服务响应。

我遇到的问题是,当任何服务抛出已检查异常时,该异常会生成并向客户端返回 SOAP 错误,客户端会抱怨“签名或解密无效”。

我正在使用相同的 wsit 策略来签署有效的服务响应(验证成功)来签署 SOAP 故障(验证失败)。

有没有人在从 Metro 签署 SOAP 错误时遇到过这个或类似的问题?是否有一种已知的标准方法可以做到这一点?

任何帮助/建议表示赞赏。谢谢。

0 投票
1 回答
481 浏览

java - WSIT Metro 版本 2.3 WSRM1124 错误

我们有一个在 Tomcat v7 服务器内的 JVM(IBM jdk 而不是 Oracle)上运行的 java 应用程序,具有以下属性

JVM信息

  • Java版本:1.6.0
  • Java 供应商:IBM Corporation
  • Java 规范版本:1.6
  • Java 规范供应商:Sun Microsystems Inc.
  • Java 规范名称:Java 平台 API 规范
  • JVM版本:2.4
  • JVM 供应商:IBM Corporation
  • JVM 名称:IBM J9 VM
  • JVM 规范版本:1.0
  • JVM 规范供应商:Sun Microsystems Inc.
  • JVM 规范名称:Java 虚拟机规范
  • JVM管理规范版本:1.0
  • Java 编译器:j9jit24
  • Java 类格式版本:50.0

相关系统属性

  • -Dsun.nio.ch.disableSystemWideOverlappingFileLockCheck=true
  • -Doracle.net.ssl_version=3
  • -Djavax.xml.stream.XMLInputFactory=com.ibm.xml.xlxp.api.stax.XMLInputFactoryImpl
  • -Djavax.xml.stream.XMLOutputFactory=com.ibm.xml.xlxp.api.stax.XMLOutputFactoryImpl
  • -Djavax.xml.stream.XMLEventFactory=com.ibm.xml.xlxp.api.stax.XMLEventFactoryImpl
  • -Djava.awt.headless=true
  • -Dfile.encoding=UTF-8
  • -Dcom.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace=false
  • -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true

使用 Metro (with WSIT) version 2.3 调用需要 WS-Security 和 Ws-Reliability 规范的 .Net SOAP 服务并收到此错误

有关服务的 wsdl 的信息

wsdl 定义了 RM 断言。

我想知道这个序列号是否可能是服务器已经认为已经完成的旧消息,但客户端仍然认为它需要重新提交并确认。此时它挂在这个问题上试图完成消息并且没有其他消息可以完成

异常跟踪

原因:com.sun.xml.ws.rx.rm.runtime.sequence.UnknownSequenceException:WSRM1124:在 com.sun.xml 中没有使用 id [urn:uuid:7b7df40c-0d0c-49ee-aabd-cd37ec8ce79d] 注册序列。 ws.rx.rm.runtime.sequence.invm.InVmSequenceManager.getSequence(InVmSequenceManager.java:307) 在 com.sun.xml.ws.rx.rm.runtime.sequence.invm.InVmSequenceManager.getOutboundSequence(InVmSequenceManager.java:339 )在 com.sun.xml.ws.rx.rm.runtime.SourceMessageHandler.registerMessage(SourceMessageHandler.java:87) 在 com.sun.xml.ws.rx.rm.runtime.ClientTube.processRequest(ClientTube.java:191 ) 在 com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050) 在 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136) 在 com。 sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019) 在 com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877) 在 com.sun.xml.ws.client.Stub.process(Stub.java:464) 在 com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:174) 在 com.sun.xml.ws。 client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108) 在 com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:91) 在 com.sun.xml.ws.client.sei。 SEIStub.invoke(SEIStub.java:154) 在 com.sun.proxy.$Proxy85.get(Unknown Source)

地铁日志

2014 年 7 月 19 日 15:22:26.581 (ajp-bio-8009-exec-4:28) FINER [com.sun.xml.ws.api.pipe.Fiber___doRun] engine-Metro/2.3 (tags/2.3-7528 ; 2013-04-29T19:34:10+0000) JAXWS-RI/2.2.8 JAXWS/2.2 svn-revision#unknown: SomeURL fiber-18 com.sun.xml.ws.handler.ClientLogicalHandlerTube@1dbb1dbb.processException 的存根(com.sun.xml.ws.rx.rm.runtime.sequence.UnknownSequenceException: WSRM1124: No sequence registered with id [urn:uuid:7b7df40c-0d0c-49ee-aabd-cd37ec8ce79d]) Jul-19-2014 15:22 :26.581 (ajp-bio-8009-exec-4:28) FINER [com.sun.xml.ws.api.pipe.Fiber___doRun] engine-Metro/2.3 (tags/2.3-7528; 2013-04-29T19:34 :10+0000) JAXWS-RI/2.2.8 JAXWS/2.2 svn-revision#unknown: SomeURl fiber-18 com.sun.xml.ws.handler.ClientLogicalHandlerTube@1dbb1dbb 的存根与 com.sun.xml.ws 返回。 api.pipe.NextAction@78467846 [kind=THROW,next=null,packet=null,throwable=com.sun.xml.ws.rx.rm.runtime.sequence.UnknownSequenceException: WSRM1124: 没有使用 id [urn:uuid:7b7df40c-0d0c-49ee-aabd-cd37ec8ce79d] 注册的序列]

我的问题

  • 造成这种情况的根本原因是什么,Metro 想要做什么?
  • 我用谷歌搜索了这个问题,我得到的只是我需要设置一些我已经做过的系统属性(见上文)。有没有人看到这个来指导我解决问题?在跟踪InVmSequenceManager 时,似乎 UUID 不在内存映射中,因此逻辑抛出了上面的异常。也许一种解决方案是配置我自己的序列管理器,但我不知道该怎么做。

提前致谢,

0 投票
1 回答
775 浏览

soap - 在 METRO SOAP 客户端中以编程方式更改 STS 服务器

是否可以在运行时更改我的客户端使用的安全令牌服务器?

我有一个工作的 METRO 2.3 客户端,用于使用 Active Directory 联合服务的安全令牌服务保护的 .NET 服务。一切都是使用 xml 文件配置的。该服务提供两个相同的服务器。一种用于测试,一种用于生产。

是否可以在运行时切换服务器?

我缩短的 wsit-client.xml:

我的 mex.xml 的重要部分:

是否可以在运行时将http://login.test.theserver.com网址更改为http://login.prod.theserver.com

0 投票
0 回答
272 浏览

java - 我的自定义 STS 无法解析 Metro 框架生成的 RST 上的 UseKey 令牌

我有自己的使用日内瓦框架的 STS。有一个带有 MutualCertificateBinding 的端点,如下

  • 使用 AsymmetricSecurityBindingElement
  • 保护级别是标志
  • 通过 https

我已经复制了它的一部分 wsdl 如下以供参考

我已经制作了一个 C# 客户端应用程序,它使用非对称密钥从 mySTS 协商安全令牌,UseKey 是一个 X509Certificate。它工作得很好。

我还直接对 mySTS 进行了 Java serlet 调用以发出令牌,它使用 PublicKey 类型,UseKey 手动设置为 RST 作为 X509 证书。它也可以正常工作,带有以下代码片段

我们的客户端使用另一个 Java servlet 调用由 mySTS 保护的 java 服务。Metro 会自动处理 STS 调用,下面是 java 服务的配置方式(使用 STS Issued Endorsing Token)

  • 代币类型:2.0
  • 密钥类型:公共
  • 密钥大小:256

下面是调用java服务的代码片段

STS 在尝试解析 UseKey 元素时抛出异常。它看起来像下面

我试图比较从 2 个 Java servlet 发送的 2 条消息。一个是由我的 servlet 以编程方式发送的,另一个是由我的客户的 servlet 发送的 Metro 生成的,我能看到的唯一不同是关于 UseKey 元素我的一个运行良好

我的一个客户不起作用(由 Metro 框架生成)

AFAI 可以看到,失败是因为 STS 无法解析 RSA KeyValue 的 UseKey 元素,而它的 UseKeyResolver 只有一个由请求的 InitiatorToken 发起的 X509SecurityTokenResolver。

所以我的问题是

  1. 调用 java 服务时是否可以通过编程方式设置 UseKey?
  2. 有没有让 STS 解析 UseKey 元素?
0 投票
2 回答
116 浏览

ipc - 如何解决 Open VMS Web 服务集成工具包 (WSIT) 中的 IPC 错误

我继承了一个我几乎没有经验的“技术”堆栈,并希望得到帮助来解决问题。使用 OpenVMS Web 服务集成工具包从 Web 浏览器调用 OpenVMS 服务我收到以下错误:

'com.hp.wsi.WsiConnectionException:错误:收发失败 EndPointLocate:%WSI-F-FAILED_IPC_INIT,初始化 IPC 上下文时意外失败'

开启 IPC 调试显示如下:

连接成功显示:

我猜这是一个资源问题,但不知道需要改变什么。

非常感谢任何帮助。

TIA

0 投票
1 回答
275 浏览

soap - JAX-WS Metro,如何拦截具有无效字符/签名不匹配的正确加密/签名消息

我的问题与这个非常相关

我已经花了数周的时间来尝试与之抗争,但似乎没有值得一提的解决方案,除了上述问题的解决方案,这是一个糟糕的解决方法,但周围似乎真的没有其他东西.

我们正在尝试与具有已建立并正在运行的 Web 服务的遗留系统进行通信,并在其 WSDL 中声明了某些 WS-Security 约束。我们不能改变服务器上的任何东西,我们只需要按照它的出价去做。我们还有一个第三方客户端实现,它实际工作并与服务器通信,所以我们知道通信是有效的——使用那个特定的客户端。现在,我们想做我们自己的。

上述 WS-Security 策略包括加密和签名。有以下几种情况:

  • 编写我们自己的代码来加密/解密和签名/验证
  • 使用现成的 JAX-WS 实现之一为我们完成上述操作

第二种选择当然是我们试图做的。然后我们分为以下几部分:

  • 地铁/WSIT
  • 阿帕奇 CXF

网络上的每个人都建议后一种选择(我也尝试过)-但目前我选择了第一种(特别是因为我们没有与 Spring 进行任何集成以利用 CXF 与它的良好集成)

在处理了一些模棱两可的文档和各种向导 (NetBeans) 之后,我们找到了一个解决方案,其中包含很少的自定义代码、带有一些密钥库的配置文件以及 wsimport 实用程序通常生成的代码。

一段时间过去了,它包括转储 XML SOAP 请求和响应,比较我们生成的失败请求和来自第 3 方客户端的成功请求。很多痛苦,没有结果 - 消息各不相同,但核心逻辑和结构还可以 - 然后 - 你实际上无法比较加密的部分。一段时间后,我得到了一个客户端,它发送了一些东西,实际上收到了一些东西,但未能解密响应。

其实解密好了,但是签名摘要验证失败了。值得一提的是,原始 XML 消息包含一个“&”字符,以及多个换行符。即 SOAP 消息的负载在语法上不是正确的 XML。反正。

似乎这种摘要验证深深植根于 Metro/WSIT 堆栈中,我绝对无法找到实际拦截和更正该摘要 - 或者实际上是计算此摘要的内容 - 显然 - 问题是一些特殊的字符在摘要计算之后或之前被翻译或规范化,我们(而是我试图用来保持双手清洁的底层实现)做了一些与 Web 服务的服务器端所做的不同的事情。

即使是 Metro 管(名字不错,但文档非常稀缺——这些天似乎没有人使用 Metro/WSIT——或者,我应该说,没有人使用 SOAP 或具有这种安全级别的 SOAP?——当我尝试 Apache CXF 时,生成的 SOAP 消息看似相似)并且它们拦截消息的方式似乎没有帮助 - 当试图获取消息的原始内容时,没有提供方法(Packet.getMessage().writeTo... - 和其他变体)实际上可以绕过摘要验证的事情——因为他们都试图以 StAX 方式、流媒体等方式读取内容(调用 StreamingPayLoadDigester.accept 总是失败)

但是希望会最后死去,我会一次又一次地尝试找到一些晦涩难懂的无证魔法来让我的东西发挥作用。好的,我正准备收工并深入研究 java 加密 - 直到我发现上述问题。实际上,在抛出摘要不匹配异常之前,它“利用”了一条从 Metro 代码深处打印的日志消息(实际上我认为是来自 wssx-impl )和规范化的解密消息。值得庆幸的是,这条消息是使用 java.util.logging 打印出来的,并且可以通过各种方式截获它——例如,将它发送到某种同步队列中,以供我的客户端使用。啊。如果有人有更好的想法,请写下你的想法。

谢谢你们。