.net web-services wcf soap irs

.net - Encabezado de seguridad de WS no válido-solicitud de SOAP ACA del IRS



web-services wcf (4)

Parece que estamos en el mismo camino; Tal vez podamos ayudarnos unos a otros.

Terminé haciendo seguridad por configuración:

<security enableUnsecuredResponse="true" authenticationMode="MutualCertificate" messageSecurityVersion="WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10" />

También deberá anular el valor de DNS de identidad para su punto final con la persona a la que se emitió su certificado. Pon esto dentro de tus etiquetas <endpoint>

<identity> <dns value="[Issued To]" /> </identity>

Finalmente, cuando creas un cliente, necesitas usar un ChannelFactory y configurar las credenciales apropiadas. El mío se parece a esto:

var factory = new ChannelFactory<BulkRequestTransmitterPortType>("BulkRequestTransmitterPort"); factory.Credentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "3164c4510490d2c0f16f1e4cffd76b708964fa7c"); factory.Credentials.ServiceCertificate.SetDefaultCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "3164c4510490d2c0f16f1e4cffd76b708964fa7c"); var client = factory.CreateChannel();

Déjame saber si te encuentras con algo más. Suponiendo que su certificado y el estado de la solicitud sean correctos, entonces, una vez que termine con esto, probablemente se quede atascado en el siguiente paso (la codificación MTOM adecuada). Si superas eso con éxito, por favor avísame :)

Estoy en el proceso de enviar una solicitud RequestSubmissionStatusDetail del IRS.

Aquí está mi problema. Al enviar el siguiente documento al IRS, siempre obtengo "Encabezado de seguridad de WS no válido". No sé qué parte de mi solicitud es responsable de que esta presentación no tenga éxito.

Estoy haciendo referencia al siguiente PDF (el código de ejemplo comienza en la página 35) :

He escrito el código en VB y C #. He interceptado la solicitud con Fiddler y también usé Altova XMLSpy para enviar solicitudes XML sin procesar al punto final del IRS.

Aquí está el código, prácticamente línea por línea del PDF, menos la clave y el TCC.

POST https://la.www4.irs.gov/airp/aca/a2a/1095BC_Status_Request_AATS2016 HTTP/1.1 Content-Type: text/xml; charset=utf-8 VsDebuggerCausalityData: uIDPo1urdU71mo5BnU/TZ/Ji3p0AAAAAddUwh6B4CU6+F/jOewcN7JE6Ql8n+R1PofxFBfDEEg4ACQAA SOAPAction: "RequestSubmissionStatusDetail" Host: la.www4.irs.gov Content-Length: 4044 Expect: 100-continue Accept-Encoding: gzip, deflate Connection: Keep-Alive <soapenv:Envelope xmlns:oas1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:us:gov:treasury:irs:msg:irstransmitterstatusrequest" xmlns:urn1="urn:us:gov:treasury:irs:ext:aca:air:7.0" xmlns:urn2="urn:us:gov:treasury:irs:common" xmlns:urn3="urn:us:gov:treasury:irs:msg:acasecurityheader"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <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"> <ds:Signature Id="SIG-82E7E6716E615C14D6144736030986660" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments" /> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> <ds:Reference URI="#TS-82E7E6716E615C14D6144736030986559"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <InclusiveNamespaces PrefixList="wsse wsa oas1 soapenv urn urn1 urn2 urn3" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" /> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <ds:DigestValue>sgPiL73lIwOppVKHHUFkuWDEcLM=</ds:DigestValue> <!-- DigestValue from Timestamp --> </ds:Reference> <ds:Reference URI="#id-82E7E6716E615C14D6144736030986558"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <InclusiveNamespaces PrefixList="wsa oas1 soapenv urn1 urn2 urn3" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" /> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <ds:DigestValue>S3OdSc3rZ8V1egoyPGzi31n8gq8=</ds:DigestValue> <!-- DigestValue from ACABusinessHeader --> </ds:Reference> <ds:Reference URI="#id-82E7E6716E615C14D6144736030986559"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <InclusiveNamespaces PrefixList="oas1 soapenv urn1 urn2 urn3" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" /> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <ds:DigestValue>wOSkrI5NmQ5i5/wgjNEIoNODy+A=</ds:DigestValue> <!-- DigestValue from ACABulkRequestTransmitterStatusDetailRequest --> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>ddLCWffcBk5/PxqnJLMUM9lWWYWX7ucKQ4vPvM/qEj9IkJ0SVDytcjn0Az9Cge0nxOHI0NWCtAzbWzcUjHtUgt8A4rnxTTShQbIP3hPIX5UghS/Y6OEvOq8RvXL1S3R8nhX/nPrQSoPq6SpEz2HKq/ST5OrsstMvSpM0hCCinEKeLmLqkjfZw5wZVEeNwQIjghcsqQe7Q9crYhgdDwuvtixcoLw0JCgCiMr9yCmFsV4X+CklPuu4/bMUcuipE5fnSpqoZ6Sxp+UFlF3yzMXH6hKFRO7LRsXtwStN1kBwPJW5iPZ6b+X0Zlrc7gYTg1dHi3kcm3gLCRQ9ou+fZa7jnQ==</ds:SignatureValue> <ds:KeyInfo Id="KI-82E7E6716E615C14D6144736030986456"> <wsse:SecurityTokenReference wsu:Id="STR-82E7E6716E615C14D6144736030986457"> <wsse:KeyIdentifier 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-profile1.0#X509v3"> removed </wsse:KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> <wsu:Timestamp wsu:Id="TS-82E7E6716E615C14D6144736030985954"> <wsu:Created>2016-01-07T20:31:49.859Z</wsu:Created> <wsu:Expires>2016-01-07T23:01:49.859Z</wsu:Expires> </wsu:Timestamp> </wsse:Security> <urn:ACABusinessHeader wsu:Id="id-82E7E6716E615C14D6144736030986558" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <urn1:UniqueTransmissionId>d4121eb6-29e8-4ebe-a485-0b2bf55fcb67:SYS12:XXXXX::T</urn1:UniqueTransmissionId> <urn2:Timestamp>2016-01-07T15:31:49Z</urn2:Timestamp> </urn:ACABusinessHeader> <urn3:ACASecurityHeader /> <wsa:Action>RequestSubmissionStatusDetail</wsa:Action> </soapenv:Header> <soapenv:Body> <urn:ACABulkRequestTransmitterStatusDetailRequest version="1.0" wsu:Id="id-82E7E6716E615C14D6144736030986559" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <urn1:ACABulkReqTrnsmtStsReqGrpDtl> <urn2:ReceiptId>1094B-15-99700283</urn2:ReceiptId> </urn1:ACABulkReqTrnsmtStsReqGrpDtl> </urn:ACABulkRequestTransmitterStatusDetailRequest> </soapenv:Body> </soapenv:Envelope>


Pude superar el error TPE1122 con el XML a continuación (con partes clave y relacionadas con TCC eliminadas). No estoy seguro de cómo está firmando las cosas (estoy usando la herramienta SoapUI en lugar de la firma programática), pero en mi caso, creo que el problema principal tenía que ver con los nombres cortos para los espacios de nombres (por ejemplo, oas, wsu, etc.). Creo que tienen que coincidir exactamente con las expectativas del IRS. Además, veo que usas la etiqueta wsa: Action mientras que yo no, aunque eso probablemente no afecte el encabezado de WS-Security.

POST https://la.www4.irs.gov/airp/aca/a2a/1095BC_Status_Request_AATS2016 HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: text/xml;charset=UTF-8 SOAPAction: "RequestSubmissionStatusDetail" Content-Length: 6088 Host: la.www4.irs.gov Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5) <soapenv:Envelope xmlns:oas1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:us:gov:treasury:irs:msg:irstransmitterstatusrequest" xmlns:urn1="urn:us:gov:treasury:irs:ext:aca:air:7.0" xmlns:urn2="urn:us:gov:treasury:irs:common" xmlns:urn3="urn:us:gov:treasury:irs:msg:acasecurityheader" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xd="http://www.w3.org/2000/09/xmldsig#"> <soapenv:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <ds:Signature Id="SIG-7570AFA8291320B0AC145394323250875" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <ds:Reference URI="#TS-7570AFA8291320B0AC145394323250671"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <InclusiveNamespaces PrefixList="wsse oas1 soapenv urn urn1 urn2 urn3 xd" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue>mvcVAijgkdnRTsyynwCzUHX39VM=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-B123454679813489712349871234987123"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <InclusiveNamespaces PrefixList="oas1 soapenv urn1 urn2 urn3 xd" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue>5b2SAtep+3PvQj7hZnIGceu0RNg=</ds:DigestValue> </ds:Reference> <ds:Reference URI="#id-D123454679813489712349871234987123"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <InclusiveNamespaces PrefixList="oas1 soapenv urn1 urn2 urn3 xd" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transform> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <ds:DigestValue>iO0oIkBURxyOUPhrJ/j5YPeRLbQ=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>REDACTED</ds:SignatureValue> <ds:KeyInfo Id="KI-7570AFA8291320B0AC145394323250873"> <wsse:SecurityTokenReference wsu:Id="STR-7570AFA8291320B0AC145394323250874"> <wsse:KeyIdentifier 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">REDACTED</wsse:KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> <wsu:Timestamp wsu:Id="TS-7570AFA8291320B0AC145394323250671"> <wsu:Created>2016-01-28T01:07:12Z</wsu:Created> <wsu:Expires>2016-01-28T01:07:13Z</wsu:Expires> </wsu:Timestamp> </wsse:Security> <urn:ACABusinessHeader wsu:Id="id-B123454679813489712349871234987123"> <urn1:UniqueTransmissionId>5c953d6e-fb77-483f-89ee-5b824550d703:SYS12:RDCTD::T</urn1:UniqueTransmissionId> <urn2:Timestamp>2016-01-27T13:46:00Z</urn2:Timestamp> </urn:ACABusinessHeader> </soapenv:Header> <soapenv:Body> <urn:ACABulkRequestTransmitterStatusDetailRequest version="1.0" wsu:Id="id-D123454679813489712349871234987123"> <urn1:ACABulkReqTrnsmtStsReqGrpDtl> <urn2:ReceiptId>1094C-00-00000000</urn2:ReceiptId> </urn1:ACABulkReqTrnsmtStsReqGrpDtl> </urn:ACABulkRequestTransmitterStatusDetailRequest> </soapenv:Body>


Si desea conectarse al encabezado WS en SOAPUI debe configurar:

Esto se debe a los enlaces utilizados (wsHttpBinding):

<endpoint address="" binding="wsHttpBinding" bindingConfiguration="httpsBindingService" contract="Namespace.Contract"/>

Recomiendo encarecidamente no ir a la ruta wsHttpBinding, sino a la ruta basicHttpsBinding más estándar (si controla el servicio). Hay muchos problemas, especialmente si tiene clientes java (utilizando Eclipse) que se conectan a sus servicios.

<endpoint address="" binding="basicHttpsBinding" bindingConfiguration="DefaultHttpsBinding" contract="Namespace.Contract" />


Supongo que tiene un elemento de firma perdido o desalineado.

En la documentación se dice:

Los transmisores deben cargar dos archivos xml 1. Archivo de manifiesto : para crear el archivo XML de manifiesto de solicitud: los transmisores deben usar el esquema IRS-ACAUserInterfaceHesserMessage.xsd para agregar / crear "ACA Business Header" y "Request Manifest Details" 2. Archivo de datos del formulario : ( 1094 / 1095- [B, C]) - IRS-Form1094-1095BTransmitterUpstreamMessage.xsd - IRS-Form1094-1095CTransmitterUpstreamMessage.xsd

En la documentación que has proporcionado hay una pista que dice:

TPE1122 Encabezado de seguridad de WS no válido. Inténtalo de nuevo.

Asegúrese de que el mensaje SOAP, incluido el archivo Manifest , contenga los elementos firmados necesarios de WS-Security.

Comente mi respuesta para decirnos si está relacionada con problemas de firma en el archivo de manifiesto.