7

我们正在尝试使用从 STS 发出的 SAML 令牌让 WCF 和 Java 相互通信。尽管双方都符合标准,WS-Security、WS-Trust、WS-Policy 等,但它们似乎并不相互交流,并且其中一方会抛出神秘异常或忽略安全标头.

我们在 MS 端使用 .NET 3.5、WCF 联合绑定,在 java 端使用 Axis2/Rampart/Rahas。

有没有人能够完成这项工作?

4

5 回答 5

6

Axis2 在 WS 标准合规性方面是不完整的。

我最近(上个月)经历了一个 POC 阶段,其中 Axis2 未能通过我的 WS-* 合规性测试(特别是 WS-AT、WS-Coordination)。

看看“地铁计划”。Sun 和 Microsoft 合作使 WCF 和 JAX-WS 互操作“正确”。
https://metro.dev.java.net/

于 2009-06-11T13:45:46.530 回答
3

如果可以的话,我也不建议在 Java 端使用 Axis2。显然,使用 Glassfish 或 JAX-WS 会更容易,尽管我从未测试过它。

在尝试使 WCF 和 Axis2 合作时,我也遇到了这些问题。检查 WSDL 文件中使用的标准版本,在我们的例子中不匹配。

于 2009-06-15T12:10:03.100 回答
2

您是否正在处理文档文字与 rpc 编码的问题?(对不起,不得不问。)

http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/

http://www.developerfusion.com/article/4694/web-services-interoperability-between-j2ee-and-net-part-1/3/

http://msdn.microsoft.com/en-us/library/ms996466.aspx

于 2009-05-21T13:59:39.183 回答
2

我假设服务器端是轴,不清楚但更常见。

如果您正在使用 Java 编写可互操作的 Web 服务,您应该考虑切换到 JAX-WS,不仅因为 axis2 编程模型有点奇怪,而且代码通常不完整。我之前确实遇到过部分实现的功能,而且我发现很难确定使用 Microsoft 堆栈执行了哪些互操作性测试。

我会说您将来使用 JAX-WS 堆栈有更好的机会。一个主要原因是 Sun 工程师花了相当长的时间与 Microsoft 工程师坐在一起,以确保他们的堆栈是可互操作的,并且他们以相同的方式解释规范。除此之外,编程模型更容易并且可以使用注释驱动。它还在一定程度上简化了部署和维护。可以忽略用于服务 .AAR 文件的附加容器以及从服务端点中删除 axis2 的操作:端点可以被视为 Servlet。

有关于人们让 SAML 与 JAX-WS 一起工作的文档:http ://www.jroller.com/gmazza/entry/using_the_opensaml_library_in

如果您不能离开axis2,我认为需要采用类似的策略。您将在哪里拦截令牌并在它调用服务端点之前进行身份验证。

见:http ://www.omg.org/news/meetings/workshops/Web_Services_USA_Manual/02-3_K_Smith.pdf

http://www.mail-archive.com/axis-user@xml.apache.org/msg10292.html

http://www2.sys-con.com/ITSG/virtualcd/WebServices/archives/0303/secrist/index.html

于 2009-06-09T16:56:10.390 回答
1

我们已经成功地在客户端和服务器端使用 WCF 测试了 Rampart 的 WS-Trust 场景。

BTW Rampart 尚不支持 WS-Federation 方案,您的安全策略可能与它相关。[仅供参考 - WS-Federation 将于明年年中随 Rampart 推出]。

如果可以,请附上安全策略,我们可以仔细查看..

于 2011-11-30T09:34:32.320 回答