在C ++ / Linux中为Gsoap使用WSSE插件

时间:2011-06-20 12:48:00

标签: c++ linux ws-security gsoap

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

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

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

2 个答案:

答案 0 :(得分:3)

要自动将#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 1}}
  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. 相关联
  7. 启用HTTP压缩,使用-DWITH_GZIP进行编译并与-lz
  8. 相关联

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

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

答案 1 :(得分:-1)

  

我需要在头文件中包含什么

#import "wsse.h"

(请参阅头文件中的注释,或者部分启动“绑定的策略启动器”的部分生成的文档)

更新: 复制&amp;从生成的文档中粘贴:

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