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

Adi*_*ora 7 c++ linux ws-security gsoap

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

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

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

Dr.*_* RE 5

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

[
#import "wsse.h"
]
Run Code Online (Sandbox Code Playgroud)

然后(假设是 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 调用,告诉您如何注册插件等。


Dad*_*y32 -1

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

#import "wsse.h"
Run Code Online (Sandbox Code Playgroud)

(请参阅头文件中的注释,或生成的文档,了解以“ 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
Run Code Online (Sandbox Code Playgroud)

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

另请参阅操作方法部分