如何使用gsoap初始化服务器上​​下文以启用简单身份验证(仅限服务器身份验证)

时间:2017-06-02 07:52:43

标签: c++ authentication ssl gsoap

我有一个server.pem和一个server.jks用于后端,这是我的客户端(soapui)。我初始化ssl服务器上下文,以便为我的Web服务启用简单身份验证,如下所示:

int ssl_connection_flag = SOAP_SSL_DEFAULT; // Simple authentication

int soap_result = soap_ssl_server_context(soap_object,
                                                ssl_connection_flag,//SOAP_SSL_NO_AUTHENTICATION,//m_ssl_connection_flag,
                                                m_key_file.c_str(),//Settings::instance()->get_cert_mngr_tls_certificate_path().c_str(),//"D:\\ICA\\Release\\currentStore\\TLSCertificate.pem",//m_ssl_private_key_file_path.c_str(),/* keyfile: required when server must authenticate to clients (see SSL docs on how to obtain this file) */
                                                l_recover.c_str(),//"changeit",//PWDHelper::instance()->retrieve_pwd("k-tls-key").c_str(),//"changeit",//"12345678",//"server_key_password",/* password to read the key file (not used with GNUTLS) */
                                                m_ca_certs_file.c_str(),//Settings::instance()->get_cert_mngr_ca_path().c_str(),//"D:\\ICA\\Release\\currentStore\\CA.pem",//"D:\\CertificatBrahim\\CAs.pem",//m_ssl_ca_file_path.c_str(), /* optional cacert file to store trusted certificates */                                                 
                                                NULL, /* optional capath to directory with trusted certificates */
                                                NULL,/* DH file name or DH key len bits (minimum is 512, e.g. "512") to generate DH param, if NULL use RSA */
                                                NULL,
                                                NULL);

麻烦的是,当我从SoapUI发送请求到位于我的服务器的远程PC后,我在wireshark中寻找。解码看起来像是在进行相互认证。

但是当我改变时

  

SOAP_SSL_DEFAULT

  

SOAP_SSL_NO_AUTHENTICATION

,并在wireshark中发送了相同的请求,看起来有一个简单的(只有服务器身份验证)正在进行。

但这让我感到困惑,因为如果我遵循gSoap文档,TLS / SSL选项SOAP_SSL_NO_AUTHENTICATION,则禁用客户端和服务器身份验证。

然后我的问题是我做错了什么?

提前感谢您的回复。

最好的问候。

1 个答案:

答案 0 :(得分:0)

服务器端的SOAP_SSL_NO_AUTHENTICATION标志不会阻止客户端请求服务器进行身份验证。此标志禁用对等方向请求方进行身份验证的要求。在您的情况下,客户端是请求方,标志位于服务器端。