У меня есть этот C# код, который генерирует двоичный токен имени пользователя base64 для подключения к wsdl.
var client = new StandardApiClient(); var credentials = client.ClientCredentials.UserName; credentials.UserName = "myusername"; credentials.Password = "mypassword";
Это создает следующее xml
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-29" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:Username>myusername</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">mypassword</wsse:Password> <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">bLW62fQBaMG77CELiw11dg==</wsse:Nonce> <wsu:Created>2016-01-22T18:14:02.430Z</wsu:Created> </wsse:UsernameToken> </wsse:Security>
I Я попробовал несколько примеров в Интернете, но все они недействительны. Это то, что у меня сейчас есть.
protected function getHeaderXml() { $dateCreated = date('Y/m/d H:i:s'); $nonce = base64_encode(sha1((mt_rand() . $dateCreated . self::PASSWORD))); return ' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://cdx.XXXXX.com/Api/0.99/" xmlns:deal="http://schemas.datacontract.org/2004/07/XXX.BaseApi" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <soapenv:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-29" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:Username>'.self::USERNAME.'</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">'.urlencode(self::PASSWORD).'</wsse:Password> <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">'.$nonce.'</wsse:Nonce> <wsu:Created>'.$dateCreated.'</wsu:Created> </wsse:UsernameToken> </wsse:Security> </soapenv:Header> <soapenv:Body>'; }