Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   COVE. Encabezados en XML-Cliente Webservice-SOAP (https://www.clubdelphi.com/foros/showthread.php?t=77154)

ruedabeat2003 28-12-2011 00:45:22

COVE. Encabezados en XML-Cliente Webservice-SOAP
 
Hola, estoy ejecutando mi funcion al Cliente de Webservice Delphi(WSDL-Importer)pero la respuesta que tengo del Web es el error:
Código:

<faultstring>Error on verifying message against security policy Error code:1000</faultstring>
Creo que todo se debe a que aún cuando mi XML esta ya formado, en el encabezado del mismo me hacen falta algunos Elementos en el Encabezado, un archivo de ejemplo me indica que tendría que enviarlo de la siguiente manera:
Código:

  <?xml version="1.0" encoding="UTF-8" ?>
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:oxml="http://www.ventanillaunica.gob.mx/cove/ws/oxml/">
- <soapenv:Header>
- <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
- <wsse:UsernameToken>
  <wsse:Username>GWT921026L97</wsse:Username>
  <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">2eSBtD+Go01Kaka4YoLqrsvDWrP1AZn1nFZTQmT/3S7EFZVD5Pvju09ybA5nwMCK</wsse:Password>
  </wsse:UsernameToken>
  </wsse:Security>
  </soapenv:Header>
- <soapenv:Body>
- <oxml:solicitarRecibirCoveServicio>
- <!-- 1 or more repetitions:
  -->
- <oxml:comprobantes>
  <oxml:tipoIdentificador>1</oxml:tipoIdentificador>
  <oxml:identificacion>GWT921026L97</oxml:identificacion>
...

Lo que yo obtengo de mi aplicacion Cliente es lo siguiente:
Código:

  <?xml version="1.0" ?>
- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <SOAP-ENV:Body>
- <SOAP-ENV:SolicitarRecibirCoveServicio>
- <comprobantes xmlns="http://www.ventanillaunica.gob.mx/cove/ws/oxml/">
  <tipoIdentificador>_22</tipoIdentificador>
  <identificacion>TOAR001116HDFRRL02</identificacion>
...

¿Como puedo agregar los Elementos de Seguridad UserName y Password así como todas las demas furnituras que se pueden ver en el archivo Ejemplo? ¿Y todos esos prefijos "<wsse:elemento> como los pongo?

ruedabeat2003 29-12-2011 02:28:27

Encabezados=Header
 
Bien, pues el Header se hace con siguiente llamada:
Código:

  el_header2 := TWsseHeader.Create;

 el_header2.Username := 'TOAR0011165W7';
 el_header2.KerberosToken := 'TCY2SCOki4mo0EwgiA7X7tfmCHXqIP+dvAdHFFO/utZgui9hvfs7Zg5t2QVmFBw';   

 HTTPRIO1.SOAPHeaders.Send(el_header2);

He definido lo siguiente:
Código:

  TWsseHeader = class(TSOAPHeader)
  private
    FPassword: AnsiString;
    FUsername: AnsiString;
  public
    function ObjectToSOAP(RootNode, ParentNode: IXMLNode;
      const ObjConverter: IObjConverter;const Name, URI: InvString;
      ObjConvOpts:TObjectConvertOptions;out RefID: InvString): IXMLNode; override;
    property PasswordToken: AnsiString read FPasswordToken write FPasswordToken ;
    property Username: AnsiString read FUsername write FUsername;

const
WSSE_NS_PRE = 'wsse';
WSSE_NS_URI = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-ws-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1';
UTIL_NS_PRE = 'wsu';
UTIL_NS_URI = 'schemas.xmlsoap.org/ws/2002/07/utility';
NSDELIM = ':';
{ TWsseHeader }
function TWsseHeader.ObjectToSOAP(RootNode, ParentNode: IXMLNode;
const ObjConverter: IObjConverter; const Name, URI: InvString;
ObjConvOpts: TObjectConvertOptions; out RefID: InvString): IXMLNode;
var
binsec: IXMLNode;
begin
ParentNode.AddChild(WSSE_NS_PRE + NSDelim + 'Security',WSSE_NS_URI);
Result := ParentNode.AddChild(WSSE_NS_PRE + NSDelim + 'UsernameToken',WSSE_NS_URI);
binsec := Result.AddChild(WSSE_NS_PRE + NSDelim + 'Username', WSSE_NS_URI);
binsec.Text := FUsername;
binsec := Result.AddChild(WSSE_NS_PRE + NSDelim + 'Password', WSSE_NS_URI);
binsec.Attributes['Type'] := 'http://docs.oasis-#PasswordText';
binsec.Text := FPasswordToken ;
end;

Y obtuve lo siguiente:
Código:

<?xml version="1.0" ?>
- <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <SOAP-ENV:Header>
  <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-ws-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1" />
- <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-ws-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
  <wsse:Username>TOAR0011165W7</wsse:Username>
  <wsse:Password Type="http://docs.oasis-#PasswordText">TCY2SCOki4mo0EwgiA7X7tfmCMHXqIP+dvAdHFFO/utZgui9hvfs7Zg5t2QVmFBw</wsse:Password>
  </wsse:UsernameToken>
  </SOAP-ENV:Header>
- <SOAP-ENV:Body>
- <SOAP-ENV:SolicitarRecibirCoveServicio>
...

Ya lo unico que me falta es cerrar el Tag <wsse:Security> pues no esta su tag Final.

Que le falta a mi Metodo ??? :confused:

Mañana otra vez a prueba y error. :(

Saludos.

dado 29-12-2011 16:58:09

Aqui esta la solucion para el envio del COVE

http://www.validacfd.com/index.php?load=cove

Mario san 29-12-2011 22:03:49

Saludos! Vengo encontrando este foro y pues, por causas ajenas a mi, vamos empezando el proyecto, solo que lo estoy haciendo en C# .net

De principio me dijeron que tenia que enviar un XML, para luego recibir un XML de regreso, pero solo vi objetos y son los que llene.
No me quedan algunas cosas claras, he llenado los objetos del WS, pero no se como autenticarme para mandar la informacion, es esto de los headers la forma?

Gracias!

ruedabeat2003 10-01-2012 01:11:59

Asi es, en el header especificamente en el UserNameToken tienes 2 elementos, username y password, es ahi donde debes autentificarte.


La franja horaria es GMT +2. Ahora son las 10:19:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi