WSO2 WSF/PHP-WSDL w WS-Security证书签名

WSO2 WSF/PHP-WSDL w WS-Security证书签名,php,wsdl,wso2,ws-security,Php,Wsdl,Wso2,Ws Security,我正在尝试连接到使用HTTPS上的WS-Security证书签名的WSDL 只有传出消息被签名,并且它使用二进制安全令牌。在WSO2中找不到此特定选项,但我不确定我是否在下面的代码中使用了正确的选项 我查看了WSO2 WSF/PHP示例中的代码,并将WDSL客户机示例和签名示例结合在一起 代码: 任何帮助都将不胜感激,因为我在任何地方都找不到连接到此类在线服务的示例。大多数服务似乎使用用户名和密码而不是证书进行签名,在查找WSDL和证书签名时,我根本找不到任何内容。您需要为https指定CACe

我正在尝试连接到使用HTTPS上的WS-Security证书签名的WSDL

只有传出消息被签名,并且它使用二进制安全令牌。在WSO2中找不到此特定选项,但我不确定我是否在下面的代码中使用了正确的选项

我查看了WSO2 WSF/PHP示例中的代码,并将WDSL客户机示例和签名示例结合在一起

代码:


任何帮助都将不胜感激,因为我在任何地方都找不到连接到此类在线服务的示例。大多数服务似乎使用用户名和密码而不是证书进行签名,在查找WSDL和证书签名时,我根本找不到任何内容。

您需要为https指定CACert选项,以便使用设置为https端点的to端点。还可以使用非wsdl模式,因为wsdl模式存在一些已知问题

$my_cert = ws_get_cert_from_file("./keys/cert.pem");
$my_key = ws_get_key_from_file("./keys/key.pem");

$sec_array = array("sign"=>TRUE,
                   "algorithmSuite" => "Basic256Rsa15",
                   "securityTokenReference" => "EmbeddedToken");  //Is this correct for Binary Security Token?

$policy = new WSPolicy(array("security"=>$sec_array));

$sec_token = new WSSecurityToken(array("privateKey" => $my_key,
                                       "certificate" => $my_cert));

$client = new WSClient(array("wsdl"=>"https://.../Informationservice.WSDL",
                             "useWSA" => TRUE,
                             "policy" => $policy,
                             "securityToken" => $sec_token));

$proxy = $client->getProxy();   

$return_val =  $proxy->StreetTypes();