我正在尝试连接到使用通过HTTPS进行WS-Security证书签名的WSDL。
只有外发邮件被签名并且它使用二进制安全令牌(在WSO2中找不到这个特定选项,但所以我不确定我在下面的代码中使用了正确的选项。)
我已经查看了WSO2 WSF / PHP示例中的代码,并将WDSL客户端示例和签名示例连接在一起。
代码:
$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();
任何帮助都会非常感激,因为我无法在任何地方找到连接到此类服务的示例。大多数服务似乎都使用用户名和密码而不是证书进行签名,在查找WSDL和证书签名时,我根本找不到任何内容。
答案 0 :(得分:0)
您需要为https指定CACert选项,以便将“to”端点设置为https端点。还使用非wsdl模式,因为wsdl模式存在一些已知问题。