@alexkst

Какой именно принцип подписи SOAP запроса?

У меня есть отлинчо работающий демо-код, который отправляет SOAP запрос на сервер.
Проблема в том, что мне необходимо изменить некоторые переменные на свои.

Я совсем не понимаю что в строке $token (это SSL сертификат?) и какой принцип подписи запроса?

$number = '500';

$token = 'MIIF1DCCBLygAwIBAgIDHSh4MA0GCSqGSIb3.......L7dZPKj+Shw=';
$DigestValue = '/yN46vA4Z95xaGyXq3b14bw9ybg=';
$SignatureValue = 'QwJID1jLRvWlXJ4alQ2lYk2BYQxchQ.......13vZnLRxFHw==';

$envelope = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
                <s:Header>
                    <wsa:Action>urn:landskra-wse:property/Number</wsa:Action>
                    <wsa:To>http://ws-test.demo.com/data/property.asmx</wsa:To>
                    <BillingInfo xmlns:h="urn:landskra-wse:property" xmlns="urn:landskra-wse:property" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                        <companyId>1</companyId>
                        <userId>1</userId>
                    </BillingInfo>
                    <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" s:mustUnderstand="1">
                        <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="Id-RequestToken">'.$token.'</wsse:BinarySecurityToken>
                        <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
                            <SignedInfo>
                                <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                                <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
                                <Reference URI="#Id-RequestBody">
                                    <Transforms>
                                        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                                    </Transforms>
                                    <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
                                    <DigestValue>'.$DigestValue.'</DigestValue>
                                </Reference>
                            </SignedInfo>
                            <SignatureValue>'.$SignatureValue.'</SignatureValue>
                            <KeyInfo>
                                <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                                    <wsse:Reference URI="#Id-RequestToken" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" />
                                </wsse:SecurityTokenReference>
                            </KeyInfo>
                        </Signature>
                    </wsse:Security>
                </s:Header>
                <s:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Id-RequestBody">
                    <Number xmlns="urn:landskra-wse:property">
                        <number>'.$number.'</number>
                    </Number>
                </s:Body>
             </s:Envelope>';


Куда копать, чтопы подписывать запросы с любым $number?
  • Вопрос задан
  • 347 просмотров
Пригласить эксперта
Ответы на вопрос 1
toxa82
@toxa82
Это нужно смотреть описание Soap api который вы используете. Там должно быть описано как формировать токен подписи. И лучше использовать класс SoapClient.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы