在C++/Linux中使用Gsoap的WSSE插件
Using WSSE plugin for Gsoap in C++/Linux
我们如何在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++):
- 运行
wsdl2h -Iimport -o service.h <your-wsdls-xsds-etc>
并确保wsdl2h使用修改后的typemap.dat
(如果它在当前目录中,则您可以确定),并且导入选项指向带有wsse.h
的gsoapimport
目录 - 运行
soapcpp2 service.h
- 编译生成的
soapC.cpp
、soapClient.cpp
(如果是客户端)、soapServer.cpp
(如果是服务器)、stdsoap2.cpp
、dom.cpp
、plugin/wsseapi.c
、plugin/smdevp.c
、plugin/mecevp.c
- 编译以上内容时,必须使用
-DWITH_OPENSSL
-DWITH_DOM
- 针对
-lssl
和-lcrypto
的链接 - 要启用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文档中找到)
另请参阅操作步骤部分。
相关文章:
- 使用GSoap实现ONVIF
- 使用 mod_gsoap 部署服务时,如何在 Gsoap 中更改 soap 上下文的模式?
- gSoap在从.wsdl创建.h期间出现错误
- 如何从客户端在 gsoap C++ 的标头中传递非 xml 数据?
- 在使用 gSoap 链接多个 SOAP 服务时启用保持活动状态
- 正在填充gsoap 2.8.59中的结构
- 使用c++的gSOAP中的stdsoap2.cpp中存在编译错误
- 使用 CMake (make) 和 GCC 构建和编译 gSOAP 项目
- 为没有 WSDL 的 Gsoap 创建一个标头
- 编译 gsoap 输出文件 (onvif) 时出现问题
- gSOAP - 未设置 SOAP 操作标头
- 有没有办法用c ++ Gsoap客户端调用python soap spyne服务器?
- GSOAP SOAPCPP2 #IMPORT:无法打开文件“ SOAP12.H”进行阅读
- 如何使用GSOAP初始化服务器上下文以启用简单身份验证(仅服务器身份验证)
- 在 soap_ssl_server_context(..) 中使用继承时 gsoap 中的分段错误
- 如何(优雅地)终止 gSOAP 服务器
- 在链接链接静态(GSOAP)库的共享库时,为什么会得到一个未定义的符号
- 具有GSOAP的序列化对象,以验证Web服务输出
- gSOAP WSSE报头缺少xmlns命名空间声明
- 在C++/Linux中使用Gsoap的WSSE插件