8

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

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

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

4

2 回答 2

4

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

[
#import "wsse.h"
]

然后(假设 C++):

  1. 运行wsdl2h -Iimport -o service.h <your-wsdls-xsds-etc>并确保 wsdl2h 使用修改后的typemap.dat(如果它在当前目录中你没问题)并且导入选项指向 gsoapimport目录wsse.h
  2. soapcpp2 service.h
  3. 编译生成的soapC.cpp, soapClient.cpp(如果是客户端), soapServer.cpp(如果是服务器), stdsoap2.cpp, dom.cpp, plugin/wsseapi.c, plugin/smdevp.c,plugin/mecevp.c
  4. 编译上述内容时,您必须使用-DWITH_OPENSSL -DWITH_DOM
  5. 链接反对-lssl-lcrypto
  6. 启用 HTTP 压缩、编译-DWITH_GZIP和链接-lz

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

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

于 2016-02-04T15:17:09.790 回答
-1

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

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

另请参阅操作方法部分

于 2013-07-01T16:19:49.947 回答