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

Using WSSE plugin for Gsoap in C++/Linux

本文关键字:Gsoap WSSE 插件 C++ Linux      更新时间:2023-10-16

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

问题是,我必须在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++):

  1. 运行wsdl2h -Iimport -o service.h <your-wsdls-xsds-etc>并确保wsdl2h使用修改后的typemap.dat(如果它在当前目录中,则您可以确定),并且导入选项指向带有wsse.h的gsoap import目录
  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文件。

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

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

#import "wsse.h"

(请参阅头文件中的注释或生成的文档,以了解启动"绑定的策略使能器"的部分)

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

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文档中找到)

另请参阅操作步骤部分。