Мне нужен один запрос мыла wsse segurity с именем пользователя, EncryptedKey, signature и timstap, вот пример, который я хочу:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://xxxx.xxx.xxxx.unitxxx.com">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-AB445D2F2EE6354C271523280664400166">
<wsse:Username>wstest</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">wtest</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">2rFPxPO/bQy9cE20WRj9SQ==</wsse:Nonce>
<wsu:Created>2018-04-11T09:47:59Z</wsu:Created>
</wsse:UsernameToken>
<xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="EK-AB445D2F2EE6354C271523280664399164">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" />
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<wsse:SecurityTokenReference>
<ds:X509Data>
<ds:X509IssuerSerial>
<ds:X509IssuerName>xxx,xxx,xxxx,C=es</ds:X509IssuerName>
<ds:X509SerialNumber>1532781564</ds:X509SerialNumber>
</ds:X509IssuerSerial>
</ds:X509Data>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
<xenc:CipherData>
<xenc:CipherValue>NN92JfiXBiw3aWL5wtcrlRGUrW+un4j5gBpjtLZL2RX/1/02tNb0ss/FaZG/9HPgsu36ykULpLivVCVp/e6Y8PehOTl6PIL89pHpTcVnzWfy2VetvZX3GOpo7x6esfw+pGtboEz6x0N13Dkbjc+KaezXdWqrNkBVsXqHgkh9R8xIuf2d8+MZxw26YCbBeW84Sm1yvZhd3tzNfN5U0PldrOnBvIhgngzB3mkUV6boxuJXTc/0FUCvHOYcCc4Y8GDiygas9TcHX1htLD97fRs8HY7xfY0ZMyXSezOcODW122WrUcrd/QBxELRMS+Gx5qxCduAJmMZh72T+jwK1bAg+hQ==</xenc:CipherValue>
</xenc:CipherData>
<xenc:ReferenceList>
<xenc:DataReference URI="#ED-AB445D2F2EE6354C271523280664399165" />
</xenc:ReferenceList>
</xenc:EncryptedKey>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SIG-AB445D2F2EE6354C271523280664391163">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="soapenv ws" />
</ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#id-AB445D2F2EE6354C271523280664391162">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ws" />
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>xAKqV8RmGOJ2OdBvzds9ZLLmECA=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>Om7Jkdupkg2XlyQOSmHV3o805FgCUdO03hz4Y8WwKk4ckx17hTenCcukI7/yptkUOK8M/GynWOtmrqxu7CEZuyHjlI8elPLxxqReV8vIf4YAUDmAK4uR/3qHquLtEnPDdDH3mnHdo0p4STS6XRWyN/LD1pwPxPJLXKt5rxmHVq3/9P4sZUCNIhl4awrdlblKtNHQapPWi0SjIUw9DiF3qL5cv/FoaCdsG56tt5/uV7f4MiI/KHgBLEnISsFqYX5cK69f9B8pA3uFjerVdqSJkT3QoXDqCi1VxYg+cjv795ahtKQvTycngnhd+EFSPahdILC8HD0vDVgAQZ/Nouf87A==</ds:SignatureValue>
<ds:KeyInfo Id="KI-AB445D2F2EE6354C271523280664391160">
<wsse:SecurityTokenReference wsu:Id="STR-AB445D2F2EE6354C271523280664391161">
<ds:X509Data>
<ds:X509IssuerSerial>
<ds:X509IssuerName>CN=xxx,xxx, xxx,xxx,C=es</ds:X509IssuerName>
<ds:X509SerialNumber>121371954</ds:X509SerialNumber>
</ds:X509IssuerSerial>
</ds:X509Data>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
<wsu:Timestamp wsu:Id="TS-AB445D2F2EE6354C271523280664387158">
<wsu:Created>2018-04-11T09:47:59Z</wsu:Created>
<wsu:Expires>2018-04-11T10:47:59Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soapenv:Header>
<soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-AB445D2F2EE6354C271523280664391162">
<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="ED-AB445D2F2EE6354C271523280664399165" Type="http://www.w3.org/2001/04/xmlenc#Content">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<wsse:SecurityTokenReference xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsse11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd" wsse11:TokenType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey">
<wsse:Reference URI="#EK-AB445D2F2EE6354C271523280664399164" />
</wsse:SecurityTokenReference>
</ds:KeyInfo>
<xenc:CipherData>
<xenc:CipherValue>uSSuJrfRFw8MNfs49G2bjlhuHCMaVk9BSUU+YeCdAKFEfv5OIYeIIr1MbWK+Dfivxl5XHuKOlTbuWpLfafUVubNMJSBKSB5MFEJDLX8AOzk9CrpJiSp/E4AtLyZv+kLuCryEZYqXK+MwA21emuNL8g==</xenc:CipherValue>
</xenc:CipherData>
</xenc:EncryptedData>
</soapenv:Body>
</soapenv:Envelope>
В настоящее время я использую такую библиотеку: https://github.com/formapro/xmlseclib
У меня не было проблем с генерацией частей UsernameToken и TimeStap, но я получил ошибку подписи или дешифрование было неверным,
Часть подписи и часть X509IssuerSerial X509IssuerName X509SerialNumber сводят меня с ума, я мог бы создать XML, как это, но я нахожу ту же ошибку. Мой XML теперь с этой библиотекой:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://xxxxx.unixxxxxxx4.com">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#pfx5a286165-3253-9abc-3669-7625fee0a89c">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>/VPuPeNUMiB3c6CFQ6CryP6HtjA=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#pfx932db440-7490-a45f-8454-6e091b878767">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>wfWL5012zWJ6jVtlocZA0t1Qz3c=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#pfx216ea2e3-07d9-755c-0b88-62fe84cc7ad2">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>7/wQi/a0kFObr+llp7m3tuvyygA=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>KzFHuRapxDi51mB4QXLF57GqvMIci/q2vj4Xf0jWkgmfJJ4mho+uCFWu6mSMKRt4rQBjAuYP5dq0fzexQL+XazTGNKZcgNIkhLcocBvqX+xJH4sKsCU00zUtnvgxn8G306gv0eioOp2zcG1Q6vttLzGGG/ErVbi5j5M3dmu9tdnnk/06HRbn22FSdEKveyQJP9A2eFjgN/zrVu+/cVq89MYSREMexEHmNhvqsxCzSRze5zQDJWRaFynrKvXpLx+nB/PdVd7LP5VkGfRtHs0XjoTT0j/LVaG8NLb/zii9otL2EbOYHldvFh1sT3iO79awOs0Xl3Ew3/hxg+yiNchibQ==</ds:SignatureValue>
<dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<wsse:SecurityTokenReference>
<dsig:X509Data>
<dsig:X509IssuerSerial>
<dsig:X509IssuerName>C=es</dsig:X509IssuerName>
<dsig:X509SerialNumber>1532781564</dsig:X509SerialNumber>
</dsig:X509IssuerSerial>
</dsig:X509Data>
</wsse:SecurityTokenReference>
</dsig:KeyInfo>
</ds:Signature>
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="pfx5a286165-3253-9abc-3669-7625fee0a89c">
<wsse:Username>wstest</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">om@P3w*i8m</wsse:Password>
<wsse:Nonce>UVGzKa7LUS4J06laGOxCsqpQ6w9JwOvFBvrVKKDsHiE=</wsse:Nonce>
<wsu:Created>2018-04-11T09:27:51Z</wsu:Created>
</wsse:UsernameToken>
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="pfx932db440-7490-a45f-8454-6e091b878767">
<wsu:Created>2018-04-11T09:27:51Z</wsu:Created>
<wsu:Expires>2018-04-11T10:27:51Z</wsu:Expires>
</wsu:Timestamp>
<xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="pfx55c602d1-84f7-3be3-11ff-f67c0aa11f6f">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" />
<dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<wsse:SecurityTokenReference>
<dsig:X509Data>
<dsig:X509IssuerSerial>
<dsig:X509IssuerName>C=es</dsig:X509IssuerName>
<dsig:X509SerialNumber>1532781564</dsig:X509SerialNumber>
</dsig:X509IssuerSerial>
</dsig:X509Data>
</wsse:SecurityTokenReference>
</dsig:KeyInfo>
<xenc:CipherData>
<xenc:CipherValue>hEBkq7X/CNXOv4XKIJ+958GA82xBPSXc1IWdfDCZf1N2gVo1w9874Hfu+3lbr95ufjWgTgfJQvgH+4RNayPHJjl+5igrxsoqD2QgiB4svXZf0UjjHHO8Rp+/a2PJf/nlx+vxZVPKaubT3qAxmr9cYdDTeB9nixtCQVJirbhR4/rBdOtCzj7DVdktICNepJob6LwSnDb03NyesucLQSL0grmDpMqHPOYH0Ix6bKcpEI0uTUgoKhd8Hhwa6E3sAUFw2UaX3Wq9kB4mss7R1xz9poRZsiBQCpF4P4Ax+SXN7lKCfPXvDTAHbAPiY0fB2Dt72CnX6ikyWZTaSaz97EOtfA==</xenc:CipherValue>
</xenc:CipherData>
<xenc:ReferenceList>
<xenc:DataReference URI="#pfxaf7fc76a-350c-feee-a2e7-f0edfca6ae9e" />
</xenc:ReferenceList>
</xenc:EncryptedKey>
</wsse:Security>
</soapenv:Header>
<soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="pfx216ea2e3-07d9-755c-0b88-62fe84cc7ad2">
<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="pfxaf7fc76a-350c-feee-a2e7-f0edfca6ae9e" Type="http://www.w3.org/2001/04/xmlenc#Content">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
<xenc:CipherData>
<xenc:CipherValue>nm5Aajc1CGbFz7Ti0U+nZGlCVHNyo2GLw1s5/gMV/Iqn9fKEcmR61UQGWdjY74fdIKA+ej8LBS7RZFVSxus9Vzx1K1ZgwuL60FTMmAMNAUcw8lqwvrXE91jOMI+vB0xQ/M8Ob+9mJQTSsTJky6kOC8YgHtEd4enbIG5K9UmHbs+92pOLciA4++RMbzKkn+Ge+B2QoLwLDjI/xlNzBWPAjQItAFMbkRRARP0faI8mv4B8BCjdjcfw+AGNShhJPKZiV85rMVdq27Tp4wdgbfgmqfEAsmivZqddk61xUaq44ECt+nF78Q3+mcXPFZlUnL8416FDrryyVqY5iG7xNstB1zui0zhfo8m8THa5lOHF8WV45GsHxqXskogvmIDitXYVeDC0NYc45nDTBN/OTystUbro4LkKelsDTey34CeJ1wKYiYFlbHw4uqZyK2w3wRsM+QNdhzZWTCVL9YA1sPYu8A==</xenc:CipherValue>
</xenc:CipherData>
</xenc:EncryptedData>
</soapenv:Body>
</soapenv:Envelope>
Мой код php:
$cert = "";
$dom = new DOMDocument;
$dom->loadXML($xml);
$obj = new WSSESoap($dom);
$obj->addTimestamp();
$obj->addUserToken("wstest","");
$objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type' => 'private'));
$objKey->passphrase = 'client';
$objKey->loadKey($cert, true);
$options = array("KeyInfo" => array("X509SubjectKeyIdentifier" => true));
$obj->signSoapDoc($objKey,$options);
$objKey = new XMLSecurityKey(XMLSecurityKey::AES128_CBC);
$objKey->generateSessionKey();
$siteKey = new XMLSecurityKey(XMLSecurityKey::RSA_OAEP_MGF1P, array('type' => 'public'));
$siteKey->loadKey($cert, true, true);
$options = array("KeyInfo" => array("X509SubjectKeyIdentifier" => true));
$obj->encryptSoapDoc($siteKey, $objKey, $options,false);
$obj->save("pruebas-php.xml");
$request22 = $obj->saveXML();
echo $request22;
Я не нашел ни одной библиотеки, которая могла бы генерировать параметры X509IssuerSerial X509IssuerName X509SerialNumber, как они указывают, так как все они в конечном итоге генерируют двоичный токен ect … У кого-нибудь может быть решение для правильной генерации этого xml? Некоторая библиотека или какая-то хитрость, чтобы генерировать только некоторые динамические части. Я не специалист по мылу, жду ваших ответов.
У меня есть только один сертификат JKS, который я преобразовал в Pem
большое спасибо
Задача ещё не решена.
Других решений пока нет …