【问题标题】:Calling Java WS from .NET - Java way uses Apache Rampart, .NET equivalent从 .NET 调用 Java WS - Java 方式使用 Apache Rampart,.NET 等价物
【发布时间】:2010-12-15 15:01:50
【问题描述】:

我们正在与之集成的供应商提供了一些 Web 服务功能...他们用 Java 开发了它,并为我们提供了一个示例客户端项目(Java),它显示了这些 Web 服务的使用情况。我们实际上想用 .NET 实现 Web 服务的消费/接口,但我们无法弄清楚安全性应该如何工作。

在他们的 Java 客户端示例中,他们似乎使用了一种叫做“Apache Rampart”的东西。他们的代码如下所示:

public static void initSecurityPolicy(ServiceClient client) throws Exception 
{
    Options options = client.getOptions();
    options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, 
        loadPolicy("policy.xml"));

    options.setUserName(USERID);
    options.setPassword(PASSWD);
    options.setTimeOutInMilliSeconds(READTIMEOUT);
    client.engageModule("rampart"); 
}

有人可以帮助我在 .NET 世界中寻找我应该寻找的东西来做同样的事情吗?目前,在我的 .NET 项目中。我可以很好地使用他们的 WSDL,并且它可以很好地生成代理对象,但是如果我尝试运行/调用任何函数,它会告诉我“缺少 SOAP 标头”,我相信它是安全的-有关的。

他们还为我提供了 policy.xml 文件。我是一个新手 .NET 程序员,我通常依靠 VStudio 生成的代理来处理任何与 WS 相关的编程,所以我不确定如何处理该 policy.xml 文件,也不知道他们所做的等效在 .NET 世界中的上述代码中。

【问题讨论】:

    标签: .net web-services rampart


    【解决方案1】:

    如果您真的卡住了,您可以使用IKVM 与他们的 Java 代码进行互操作。它基本上是一个托管在 .NET 中的 JVM。

    【讨论】:

      【解决方案2】:

      你需要设置soap头......像这样:

      <soap:Header>
         <wsse:Security soap:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken wsu:Id="UsernameToken-E2E367EC446B10BDA2150463848593046">
               <wsse:Username>User</wsse:Username>
               <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Pass</wsse:Password>
               <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">/rHCse9+oW6b71t1+J3GPA==</wsse:Nonce>
               <wsu:Created>2017-09-05T09:08:05.930Z</wsu:Created>
            </wsse:UsernameToken>
         </wsse:Security>
      </soap:Header>
      

      为此,您需要了解如何在 .NET 中设置 UsernameToken 以将安全凭证添加到 SOAP 消息中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        相关资源
        最近更新 更多