クライアント用の WSDL クライアントの開発に行き詰まっています。私はPHP/WSO2の初心者なので、私のギャップに我慢してください:) 何が問題なのですか:クライアントはサーバーに接続できますが、受信します
wso2-wsf-php-src-2.1.0/src/wsf_wsdl.c(1073) [wsf_wsdl]Fault payload is <soap:Faulxmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><faultcode xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">ns1:InvalidSecurity</faultcode><faultstring>An error was discovered processing the <wsse:Security> header</faultstring></soap:Fault>
サーバーの構成を変更できません。また、サーバーの構成方法 (WSPolicy など) に関する情報も取得できません。WSDL サービス プロバイダーから、次のプロパティがサーバー側で使用されているとのことでした。signing、no crypto、issuerSerial、それだけです。繰り返しますが、クライアントはサーバーに接続できます (証明書は正しい) が、応答時にエラーが表示されます。
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256Rsa15/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefIssuerSerial/>
</wsp:Policy>
</sp:Wss10>
<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
<sp:Header Namespace="http://www.w3.org/2005/08/addressing"/>
</sp:SignedParts>
</wsp:All>
</wsp:ExactlyOne>
そして、クライアントからのいくつかのコード:
private function getWSPolicy() {
$policyXML = file_get_contents("signp.xml");
$policy = new WSPolicy(array("security"=>$policyXML));
return $policy;
}
private function getWSSecurityToken() {
$clientPrivateKeyPath = 'ssl/key.pem';
$clientCertificate = 'ssl/cert-only.pem';
$serverPem = 'ssl/server.pem';
$pvt_key = ws_get_key_from_file($clientPrivateKeyPath);
$pvt_cert = ws_get_cert_from_file($clientCertificate);
$rec_cert = ws_get_cert_from_file($serverPem);
$sec_token = new WSSecurityToken(array("privateKey" => $pvt_key,
"certificate" => $pvt_cert,
"receiverCertificate" => $rec_cert
));
return $sec_token;
}
public function getClient() {
if ($this->webpay_client == null) {
$serverPem = 'ssl/newcert.pem';
$wsdl_xml = "service.wsdl";
$this->webpay_client = new WSClient
(
array ("wsdl" => $wsdl_xml,
"classmap" => $this->getClassMap(),
"policy" => $this->getWSPolicy(),
"securityToken" => $this->getWSSecurityToken(),
"HTTPMethod" => "post",
"useSOAP" => 1.1,
"CACert" => $serverPem,
)
);
}
return $this->webpay_client;
}
たぶん、誰かがこの問題を解決する方法を教えてくれますか? または、他のオプションを設定するためにデバッグする方法は? (Tcpdump は、メッセージと言及された応答を示します)。
編集: wsf ログで、WSPolicy の他のポリシーがサーバーに送信されたことがわかりました。
wso2-wsf-php-src-2.1.0/src/wsf_policy.c(221) [WSF/PHP] creating rampart client outgoing policy node
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"><wsp:ExactlyOne><wsp:All><sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"><wsp:Policy><sp:InitiatorToken><wsp:Policy><sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"><wsp:Policy><sp:WssX509V3Token10></sp:WssX509V3Token10></wsp:Policy></sp:X509Token></wsp:Policy></sp:InitiatorToken><sp:RecipientToken><wsp:Policy><sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never"><wsp:Policy><sp:WssX509V3Token10></sp:WssX509V3Token10></wsp:Policy></sp:X509Token></wsp:Policy></sp:RecipientToken><sp:AlgorithmSuite><wsp:Policy><sp:Basic256Rsa15></sp:Basic256Rsa15></wsp:Policy></sp:AlgorithmSuite><sp:Layout><wsp:Policy><sp:Strict></sp:Strict></wsp:Policy></sp:Layout></wsp:Policy></sp:AsymmetricBinding><sp:Wss10 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"><wsp:Policy><sp:MustSupportRefKeyIdentifier></sp:MustSupportRefKeyIdentifier><sp:MustSupportRefIssuerSerial></sp:MustSupportRefIssuerSerial><sp:MustSupportRefEmbeddedToken></sp:MustSupportRefEmbeddedToken></wsp:Policy></sp:Wss10></wsp:All></wsp:ExactlyOne></wsp:Policy>
これにより、このようなエラーが発生する可能性がありますか?