2

WSF/PHP で Metro Java Web サービスを使用する際に問題があります。このシナリオは、対称キーによるユーザー名認証のサンプルです。Java クライアントは正常に動作しますが、WSF/PHP は不正なシリアル番号 2147483647 を送信します。

PHPクライアントのフレーム:シリアル番号が正しくありません(32ビット整数制限?)

<xenc:EncryptedKey
                    xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
                    Id="EncKeyID-91d4e3a6-11e7-1e21-30a3">
                    <xenc:EncryptionMethod
                        Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
                        </xenc:EncryptionMethod>
                    <ds:KeyInfo
                        xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                        <wsse:SecurityTokenReference>
                            <ds:X509Data>
                                <ds:X509IssuerSerial>
                                    <ds:X509IssuerName>
                                        C=FR, ST=Some-State, O=kasstore/emailAddress=admin@kasstore.
                                        </ds:X509IssuerName>
                                    <ds:X509SerialNumber>
                                        2147483647
                                        </ds:X509SerialNumber>
                                    </ds:X509IssuerSerial>

Java クライアントを使用したフレーム: 良好なシリアル番号

<xenc:EncryptedKey
                    xmlns:ns18="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"
                    xmlns:ns17="http://www.w3.org/2003/05/soap-envelope"
                    Id="_5002">
                    <xenc:EncryptionMethod
                        Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>
                    <ds:KeyInfo
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        xsi:type="KeyInfoType">
                        <wsse:SecurityTokenReference>
                            <ds:X509Data>
                                <ds:X509IssuerSerial>
                                    <ds:X509IssuerName>
                                        EMAILADDRESS=admin@kasstore.com, O=kasstore, ST=Some-State, 
                                        </ds:X509IssuerName>
                                    <ds:X509SerialNumber>
                                        18002984546126232115
                                        </ds:X509SerialNumber>
                                    </ds:X509IssuerSerial>

コンテキスト: wsf/php クライアント: wso2 wsf php2.1.0 / Debian 32 ビット

コンテキスト: wsf/php クライアント: Policy.xml

<sp:SymmetricBinding>
                    <wsp:Policy>
                        <sp:ProtectionToken>
                                <wsp:Policy>
                                        <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never">
                                                <wsp:Policy>
                                                        <sp:WssX509V3Token10/>
                                                      <sp:RequireIssuerSerialReference/>
                                                    </wsp:Policy>
                                            </sp:X509Token>
                                    </wsp:Policy>
                            </sp:ProtectionToken>
                            <sp:Layout>
                                <wsp:Policy>
                                    <sp:Strict/>
                                </wsp:Policy>
                            </sp:Layout>
                            <sp:IncludeTimestamp/>
                            <sp:OnlySignEntireHeadersAndBody/>
                            <sp:AlgorithmSuite>
                                <wsp:Policy>
                                        <sp:Basic128/>
                                    </wsp:Policy>
                            </sp:AlgorithmSuite>
                    </wsp:Policy>
                </sp:SymmetricBinding>
                <sp:Wss11>
                    <wsp:Policy>
                        <sp:MustSupportRefIssuerSerial/>
                            <sp:MustSupportRefThumbprint/>
                            <sp:MustSupportRefEncryptedKey/>
                    </wsp:Policy>

コンテキスト: wsf/php クライアント: client.php

   private function callWebService()
    {
                // create ssecurity context
                $kasstoreServerFidelityCertificate = ws_get_cert_from_file("ksfidelity.pem");
                $kasstoreClientFidelityCertificate = ws_get_cert_from_file("ksfidelity.pem");
                if (is_null($kasstoreServerFidelityCertificate) or strlen($kasstoreServerFidelityCertificate)<1)
                {
                        error_log("Unknown certificate");
                        return;
                }
    $fidelityPolicyXml = file_get_contents("policy.xml", true);
    $fidelityPolicy = new WSPolicy($fidelityPolicyXml);
                $fidelitySecurityToken = new WSSecurityToken(array(
                "certificate" => $kasstoreClientFidelityCertificate,
                "receiverCertificate" => $kasstoreServerFidelityCertificate,
                "user" => "dummyuser@Anonymous",
            "password" => "dummypassword",
            "passwordType" => "Digest"
                ));
                try
                {
$reqPayloadString = <<<XML
<ns1:computeActions xmlns:ns1="http://ws.kasstore.com"><MyActionparams></MyActionpartams></ns1:computeActions>
XML;
$reqMessage = new WSMessage($reqPayloadString,
                                array("to" => "http://ws.kasstore.com/PosnFidelityWS/FidelityManagerPHPService",
                                "action" => "http://ws.kasstore.com/FidelityManagerPHPService/computeActionsRequest"));
 $client = new WSClient(array (
                        "policy" => $fidelityPolicy,
                        "securityToken" => $fidelitySecurityToken,
                        "useSOAP" => "1.1",
                        "CACert" => "./ksfidelity.pem",
                        "useWSA" => TRUE
                        ));
    $resMessage = $client->request($reqMessage);

証明書:証明書:

Data:
    Version: 3 (0x2)
    Serial Number:
        f9:d7:73:0f:90:b3:7a:36
    Signature Algorithm: sha1WithRSAEncryption
    Issuer: C=FR, ST=Some-State, O=kasstore/emailAddress=admin@kasstore.com
    Validity
        Not Before: Oct  8 08:48:05 2012 GMT
        Not After : Sep 21 08:48:05 2023 GMT
    Subject: C=FR, ST=Some-State, O=KasStore, OU=Kas'Fidelity, CN=KasStore Fidelity Service Certificate/emailAddress=admin@kasstore.com
    Subject Public Key Info:
4

0 に答える 0