【问题标题】:Using WSSE plugin for Gsoap in C++/Linux在 C++/Linux 中为 Gsoap 使用 WSSE 插件
【发布时间】:2011-06-20 12:47:59
【问题描述】:

我们如何在 C++/Linux 中为 Gsoap 实现 WSSE 插件? 这个link 没有提供所有信息。

问题是我必须在由 WSDL 生成的头文件中包含什么,以使其与 wsse 兼容,以便 soapcpp2 header.h 生成足够的代码,以便我可以成功编译 wsseapi.c?

另外,如果可能,请提供实现wsse插件的工作示例代码(仅限C++,没有C plz)?

【问题讨论】:

    标签: c++ linux ws-security gsoap


    【解决方案1】:

    要自动将#import "wsse.h" 添加到 wsdl2h 生成的头文件(如果它不存在)(wsdl2h 使用 WS-Policy 检测 WS-Security 要求),然后首先修改 typemap.dat 以包含这三行:

    [
    #import "wsse.h"
    ]
    

    那么(假设 C++):

    1. 运行wsdl2h -Iimport -o service.h <your-wsdls-xsds-etc>并确保wsdl2h使用修改后的typemap.dat(如果它在当前目录中就可以了)并且导入选项指向gsoap import目录wsse.h
    2. 运行soapcpp2 service.h
    3. 编译生成的soapC.cppsoapClient.cpp(如果是客户端)、soapServer.cpp(如果是服务器)、stdsoap2.cppdom.cppplugin/wsseapi.cplugin/smdevp.cplugin/mecevp.c
    4. 编译上面的时候一定要用-DWITH_OPENSSL-DWITH_DOM
    5. 链接到-lssl-lcrypto
    6. 启用HTTP压缩,用-DWITH_GZIP编译并用-lz链接

    在 C 中编译时,执行上述所有操作,但使用 wsdl2h 选项 -c 并使用 .c 文件。

    请参阅 gsoap 包中的 WSSE documentationgsoap/samples/wssedemo 示例,其中显示了以多种可能方式使用 WS-Security 的 API 调用,告诉您如何注册插件等。

    【讨论】:

      【解决方案2】:

      我必须在我的头文件中包含什么

      #import "wsse.h"
      

      (请参阅头文件中的 cmets,或生成的文档以获取以“Policy Enablers of Binding”开头的部分)

      更新: 从生成的文档中复制和粘贴:

      WS-Security (SOAP Message Security) 1.0 (accepts 1.1):
      
      #import "wsse.h" // to be added to this header file for the soapcpp2 build step
      #include "plugin/wsseapi.h"
      soap_register_plugin(soap, soap_wsse); // register the wsse plugin in your code
      // See the user guide gsoap/doc/wsse/html/index.html
      

      (可以在为您的绑定生成的 doxygen 文档中找到)

      另见how-to section

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多