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

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

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

最佳答案

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

[
#import "wsse.h"
]

然后(假设使用C++):
  • 运行wsdl2h -Iimport -o service.h <your-wsdls-xsds-etc>并确保wsdl2h使用修改后的typemap.dat(如果在当前目录中就可以了),并且import选项指向带有import的gsoap wsse.h目录
  • 运行soapcpp2 service.h
  • 编译生成的soapC.cppsoapClient.cpp(如果是客户端),soapServer.cpp(如果是服务器),stdsoap2.cppdom.cppplugin/wsseapi.cplugin/smdevp.cplugin/mecevp.c
  • 编译以上内容时,必须使用-DWITH_OPENSSL -DWITH_DOM
  • 链接到-lssl-lcrypto
  • 启用HTTP压缩,使用-DWITH_GZIP编译并使用-lz链接

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

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

    10-07 20:40