Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-11-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Bien!!
bueno, varias cosas.... yo no utilizo SBB... Además, no estoy programando nada sobre el Face, aún... me pondré más adelante... simplemente te intentaba ayudar un poco...

En el tema de la cabecera, el código que pones yo lo haría diferente... simple cuestión de estilo...

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var 
    facturasspp : SSPPFactura;
    fichero_fac : SSPPFicheroFactura;
    answ : SSPPResultadoEnviarFactura;


    htpr: THTTPRIO;
    sphdr: TSOAPHEADER;
    WS: SSPPWebServiceProxyPort;
begin
    if opendialog1.Execute then
    begin
        //Creamos los headers, necesarios para la petición SOAP
        sphdr := TSOAPHEADER.create;

        // Creo el HTTP, que utilizaré como vehiculo, así no tengo que hacer Typecasts que no me gustan nada...
        htpr := THTTPRIO.create(Self);

        //Aquí trabajamos con el propio httprio, donde podemos poner cabeceras, asignar eventos, etc...

        htpr.SOAPHeaders.Send(sphdr);
        // htpr.OnBeforeExecute := BeforeExecuteHttpRio(...
        // htpr.OnAfterExecute := AfterExecuteHttpRio(...

        // Al crear la instancia del WS, le asigno el httprio que he creado y he manipulado...

        WS:= GetSSPPWebServiceProxyPort(FALSE, '', htpr);

        facturasspp := ssppfactura.Create;
        facturasspp.correo := 'prueba@miemail.com';
        fichero_fac := ssppficherofactura.Create;
        fichero_fac.nombre := extractfilename(opendialog1.FileName);
        fichero_fac.factura := '72345';
        fichero_fac.mime := 'application/xml';
        facturasspp.fichero_factura := fichero_fac;

        try
            // Me cargo el typecast... que para eso se ha instanciado el ws sobre la variable WS
            answ := WS.enviarFactura(facturasspp);
        except
            on e:exception do showmessage(e.Message);
        end;
    end;

end;

el tema de utilizar un TxmlDocuemnt, es simplemente para ponerlo de ejemplo, para firmarlo y re-inyectarlo en la cabecera.
Se puede hacer como quieras...

El tema de lo que debe ir en el header... ese ya es otro tema que habría que aclarar...

Si con SBB te permite firmar llamadas SOAP, esta claro que debe ir en el header... capturar la llamada, firmarla, inyectarla en el header y seguir enviando la llamada original, con la llamada firmada en el header... (donde pone "security content")...
Responder Con Cita
  #2  
Antiguo 04-11-2015
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Poder: 16
espinete Va camino a la fama
Bueno...

Estoy viendo las demos de SecureBlackBox, que permiten añadir la firma al header del soap, pero tienen varias opciones y compatibilidad con varios certificados, así que habrá que averiguar cual hay que elegir.
Estas capturas de pantalla son de la aplicación demo que se incluye en los SecureBlackBox.
La aplicación nos permite abrir un XML y, entre otras cosas, añadir una firma, verificarla, quitarla, o actualizarla, y volver a guardar el XML resultante ya firmado.

Lo primero que nos pregunta es el Signature Handler. 3 opciones. Yo he elegido la WSS Signature Handler, que no sé si es la correcta porque NO ME ENTERO DE NADA:
1.png

En esa misma ventana nos pregunta si queremos crear la cabecera, o sustituir una ya existente. Como nuestro XML no tiene cabecera, le decimos que la cree.
Además, hay otra opción "sign body" que no sé qué hace. Tendré que hacer pruebas diferentes y comparar un resultado con otro para entenderlo mejor.

El siguiente paso es elegir el certificado con el que queremos firmar el XML, el Key Name, etc. y aquí tenemos otras opciones que debemos elegir de una lista: Embed Certificate Option, que supongo que es la forma en la que se incrusta el certificado:
2.png

Como tampoco tengo ni idea, pues tendré que hacer pruebas y rezar para que alguna de ellas funcione.

Una vez hemos añadido la firma y el securiyu header al XML, la sección HEADER de nuestro XML quedará así (más o menos)

Código:
<SOAP-ENV:Header SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS1="urn:Soap.InvokeRegistry">
<NS1:TSOAPHeader xsi:type="NS1:TSOAPHeader"/>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:BinarySecurityToken ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" wsu:Id="id-278627682" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">MIIIkTCCB3mgAwIBAgIJAK2....................................</wsse:BinarySecurityToken>
<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="#id-1455977767">
<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>pyHVuQqgYvQ3F1PIb+Cw39jfq2M=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo><ds:SignatureValue>kDLUYUxnRCmiR6TPwBAg/..................................</ds:SignatureValue><ds:KeyInfo><ds:KeyValue><ds:RSAKeyValue>
<ds:Modulus>AIHDAKJSAS.....................................................</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue></ds:KeyValue>
<wsse:SecurityTokenReference wsu:Id="" TokenType="" Usage="" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Reference URI="#id-278627682" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference><ds:X509Data><ds:X509Certificate>MIIIkTCCB3mgAw...................</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</SOAP-ENV:Header>
Esto se parece más al header del XML que aparece en la documentación del face, aunque no es exacto (hay muchas más cosas).

Durante estos días intentaré probar todas las opciones y averiguar si es posible crear el tipo de firma que exige face.
Responder Con Cita
  #3  
Antiguo 04-11-2015
iMia iMia is offline
Miembro
 
Registrado: jul 2010
Posts: 141
Poder: 14
iMia Va por buen camino
Tal uy como te puse por privado, según el manual de los servicios Web....

Las peticiones tanto como las respuestas deben ir firmadas según el estandar OASIS WSSecurity 1.0 X509 Token Profile
http://en.wikipedia.org/wiki/WS-Security
http://docs.oasis-open.org/wss/2004/...rofile-1.0.pdf
La plataforma FACe delega sobre la plataforma @firma
(http://administracionelectronica.gob.es/ctt/afirma) la validación y la firma electrónica
digital de los servicios web, por lo que usted puede encontrar la documentación completa
en la misma.
Responder Con Cita
  #4  
Antiguo 04-11-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.297
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Aunque no estoy interviniendo actívamente porque ahora no estoy con este tema, agradeceros (al menos a nivel personal) toda la información detallada que estáis adjuntando en este hilo.

Creo que antes o después nos será útil a michos de nosotros.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 04-11-2015
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.474
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por Neftali Ver Mensaje
Aunque no estoy interviniendo actívamente porque ahora no estoy con este tema, agradeceros (al menos a nivel personal) toda la información detallada que estáis adjuntando en este hilo.

Creo que antes o después nos será útil a michos de nosotros.
Totalmente de acuerdo.
__________________
Be water my friend.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Facturas Electronicas Argentina Chaja Varios 3 10-07-2015 19:15:05
Agregar Adendas a Facturas electronicas mexico reypcs Varios 0 20-01-2011 16:26:10
Tabla de Facturas vs Detalles de Facturas magnu9 Conexión con bases de datos 9 27-07-2007 17:27:37
Comunicaciones electronicas EDI Toni Conexión con bases de datos 0 18-04-2006 13:06:34
Campos calculados, facturas y detalles de facturas. Letty Conexión con bases de datos 7 07-11-2003 11:19:44


La franja horaria es GMT +2. Ahora son las 06:40:14.


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
Copyright 1996-2007 Club Delphi