Duda de Como Autentificarse en los WebService de Descarga de los XML

Todo lo que no cabe en los demas foros........
felipe.murillo
Mensajes: 1
Registrado: Mar Nov 20, 2018 1:57 pm

Descarga Masiva CFDI

Mensajepor felipe.murillo » Mar Nov 20, 2018 2:49 pm

hola buen dia alguien logro ya poder utilizar los web services del sat para descargar masivamente los xml.

Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Mensajepor Dado » Mar Nov 20, 2018 3:08 pm

@felipe.murillo

Uni tu mensaje con el foro donde se esta discutiendo el tema, checalo, hay muchisima informacion
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

estebanchambas
Mensajes: 51
Registrado: Mié Ago 08, 2018 2:30 pm

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Mensajepor estebanchambas » Lun Dic 17, 2018 4:57 pm

crono81 escribió:Tengo información de un acceso, que yo uso, es el siguiente (aclaro que no es para el web service, sino para otro servicio del sat):

Código: Seleccionar todo

cadena := tokenuuid + '|' + Rfc + '|' + NoCert;//cadena se guarda en el archivo c:\cadena.txt
//Esta cadena se firma con sha1 y se codifica dos veces a base64 (no se porque)
firma := openssl dgst -sha1 -sign c:\llave.key -passin pass:password c:\cadena.txt | openssl enc -base64 -A | openssl enc -base64 -A
//El tokenuuid se codifica en base64 (solo el token)
//tokenuuid se guarda en c:\tokenuuid.txt
token := openssl enc -base64 -A -in c:\tokenuuid.txt
//Se concatena el token codificado junto con la firma
firma := token + '#' + firma;
//firma se guarda en c:\firma.txt
//esta concatenacion se codifica nuevamente a base64 (creo que tienen una obsesión con esto)
firma := openssl enc -base64 -A -in c:\firma.txt;
//Ésta última codificación se usa para acceder al sitio

A ver si sirve de algo



Ese procedimiento me suena como a la generación del Token para poder acceder a las descargas del SAT por medio de la e-Firma, haciendo uso del Certificado .CER y .KEY.

Código: Seleccionar todo

 var laFirma = generaFirma(document.getElementById("privateKeyPassword").value, co);

Donde:
CO: es el token temporal:

Código: Seleccionar todo

var co = document.getElementById("tokenuuid").value + "|" + rfc + "|" + numSerie;

caviresa
Mensajes: 8
Registrado: Jue Nov 18, 2010 5:21 pm

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Mensajepor caviresa » Mar Dic 18, 2018 10:30 am

Buen día a todos!.

Les platico que he seguido las instrucciones de la creación del mensaje de autenticación, sin embargo no logro obtener el token, siempre obtengo la respuesta:

Código: Seleccionar todo

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:InvalidSecurity</faultcode><faultstring xml:lang="en-US">An error occurred when verifying security for the message.</faultstring></s:Fault></s:Body></s:Envelope>


Saben si existe una manera de hacer alguna validación?, la verdad es que ya no sé que más revisar...

Adjunto un ejemplo del mensaje que estoy obteniendo.

Agradeceré cualquier ayuda, gracias.

Saludos.
Adjuntos
ejemplo.xml
(3.98 KiB) Descargado 303 veces

estebanchambas
Mensajes: 51
Registrado: Mié Ago 08, 2018 2:30 pm

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Mensajepor estebanchambas » Mar Dic 18, 2018 10:35 am

caviresa escribió:Buen día a todos!.

Les platico que he seguido las instrucciones de la creación del mensaje de autenticación, sin embargo no logro obtener el token, siempre obtengo la respuesta:

Código: Seleccionar todo

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:InvalidSecurity</faultcode><faultstring xml:lang="en-US">An error occurred when verifying security for the message.</faultstring></s:Fault></s:Body></s:Envelope>


Saben si existe una manera de hacer alguna validación?, la verdad es que ya no sé que más revisar...

Adjunto un ejemplo del mensaje que estoy obteniendo.

Agradeceré cualquier ayuda, gracias.

Saludos.



Estoy igual, me sale lo mismo, aunque en mi caso estoy atacando estos problemas:

1) las cadenas a firmar o a hacer Digest no deben tener espacios(como en mi caso)
2) Veo que el EncodeBase64 de todos los fabricantes de Software es el mismo. Yo probé con el de XOJO que es el que uso y el de OpenSSL y da valores distintos, por lo que se ve tenemos que apegarnos a usar exclusivamente OpenSSL, para todos los procesos de criptografía y no usar otras librerías

caviresa
Mensajes: 8
Registrado: Jue Nov 18, 2010 5:21 pm

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Mensajepor caviresa » Mar Dic 18, 2018 10:39 am

estebanchambas escribió:Estoy igual, me sale lo mismo, aunque en mi caso estoy atacando estos problemas:

1) las cadenas a firmar o a hacer Digest no deben tener espacios(como en mi caso)
2) Veo que el EncodeBase64 de todos los fabricantes de Software es el mismo. Yo probé con el de XOJO que es el que uso y el de OpenSSL y da valores distintos, por lo que se ve tenemos que apegarnos a usar exclusivamente OpenSSL, para todos los procesos de criptografía y no usar otras librerías


Ok, gracias, usaré comandos de openssl, a ver si hay algún cambio, actualmente estoy usando funciones de PHP nativas, mismas que uso para el timbrado de cfdi sin mayor problema.

Saludos

caviresa
Mensajes: 8
Registrado: Jue Nov 18, 2010 5:21 pm

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Mensajepor caviresa » Mar Dic 18, 2018 2:12 pm

Buena tarde,

Mismos resultados, ya sea usando las funciones openssl de php o directamente con openssl (pruebas realizadas en CentOS).

El resultado es el mismo:

Código: Seleccionar todo

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
        <s:Fault>
            <faultcode xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:InvalidSecurity</faultcode>
            <faultstring xml:lang="en-US">An error occurred when verifying security for the message.</faultstring>
        </s:Fault>
    </s:Body>
</s:Envelope>


Hay algo más que me puedan recomendar revisar?

Gracias!

caviresa
Mensajes: 8
Registrado: Jue Nov 18, 2010 5:21 pm

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Mensajepor caviresa » Mié Dic 19, 2018 4:47 pm

Lo tenemos también!

La información que proporcionaron fue de bastante ayuda.

Gracias.

zboy
Mensajes: 1
Registrado: Vie Dic 21, 2018 12:41 pm

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Mensajepor zboy » Vie Dic 21, 2018 12:55 pm

Agradeciendo a todos los que han colaborado en este hilo, aquí mis 2 centavos.

A los que han creado la petición SOAP correctamente en su desarrollo y siguen obteniendo el mensaje "An error occurred when verifying security for the message.", es posible que el problema sea porque no han incluido el token de seguridad requerido para el servicio. Según entiendo, el servicio es de tipo WCF y deberán revisar si su lenguaje o plataforma de desarrollo puede interoperar con este tipo de servicios.

Actualmente tengo este problema en mi implementación con Java y estoy revisando la librería Axis2 para encontrar la forma de entregar el token de seguridad.

Saludos.

crono81
Mensajes: 118
Registrado: Lun Dic 16, 2013 6:55 pm

Re: Duda de Como Autentificarse en los WebService de Descarga de los XML

Mensajepor crono81 » Lun Dic 24, 2018 1:58 pm

El error "An error occurred when verifying security for the message." puede ser que sea el problema del cálculo del sha1, debe ser en binario como dice el mensaje
crono81 escribió:De acuerdo Dado, ya logré un avance, el problema no es la canonización, es problema en el propio sha1, te comento, nosotros tratabamos de obtener la base64 del hash representado en ascii, lo cual está mal, debe ser la base64 del hash en binario, ya obtengo un DigestValue de la longitud que muestra el request, yo uso openssl y lo resolví así:

Código: Seleccionar todo

openssl dgst -sha1 -binary "D:\Proyectos\Varios\post web\DescargaSatWS\sign.txt" | openssl enc -base64 -A

Lo cual ya me dá el resultado deseado, ahora sigue el SignatureValue, el cual veo en otro foro, que se obtiene de otros datos y no del timestamp como comentabamos antes, dejo la liga:
https://social.msdn.microsoft.com/Forum ... evelopment
La información que interesa de ahi es esta:
For future information seekers, here's what worked for me.

1. Digest value - canonicalize the timestamp xml, do a simple SHA1 hash on it.

2. Place the digestvalue in the 'signedInfo' and canonicalize the SignedInfo XML.

3. Calculate a derived PSHA1 key based on the trust:BinarySecret of the original token request ('main' key) and the trust:BinarySecret (seed/nonce/secondary key) of the token response.

4. Hash the binary version of the base64 of your canonicalized signedxml as HMACSHA1, with the derived key as the secret, and turn the result hash back into Base64, that's your SignatureValue


Volver a “Otros”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados