Получение "Заголовок безопасности WS в сообщении недействителен". при вызове ACAGetTransmitterBulkRequestStatus
Мне удалось сделать успешный звонок на первый веб-сервис ACA, и я подумал, что получить статус будет проще простого. Бо-о-ой, как я ошибся!
Я использовал те же настройки для службы статуса, что и для службы отправки... и получил сообщение "Заголовок WS Security недопустим!" Что дает?!?! Код генерации подписи такой же, как я использовал для отправки! Буду признателен, если кто-нибудь сможет пролить свет на то, что здесь может быть не так? Я знаю, что следующие теги должны иметь цифровую подпись (и я подписал их):
- ACABusinessHeader
- ACABulkRequestTransmitterStatusDetailRequest
- Метка времени безопасности
Вот мой запрос:
POST https://la.www4.irs.gov/airp/aca/a2a/1095BC_Status_Request_AATS2016 HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "RequestSubmissionStatusDetail"
Host: la.www4.irs.gov
Content-Length: 5217
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
<s:Envelope xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="#_1">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>KBLc15A=</DigestValue>
</Reference>
<Reference URI="#_2">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>dhkLQhzfkc=</DigestValue>
</Reference>
<Reference URI="#TS-ccf5abbbd36940f693d56b21ab489674">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>O179zVlJnyo=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>REDUCTED</SignatureValue>
<KeyInfo>
<wsse:SecurityTokenReference xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:KeyIdentifier 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">-- Base64ed cert ---</wsse:KeyIdentifier>
</wsse:SecurityTokenReference>
</KeyInfo>
</Signature>
<u:Timestamp u:Id="TS-ccf5abbbd36940f693d56b21ab489674">
<u:Created>2016-04-01T15:02:00.505Z</u:Created>
<u:Expires>2016-04-01T15:12:00.506Z</u:Expires>
</u:Timestamp>
</wsse:Security>
<abh:ACABusinessHeader u:Id="_1" xmlns:abh="urn:us:gov:treasury:irs:msg:acabusinessheader">
<UniqueTransmissionId xmlns="urn:us:gov:treasury:irs:ext:aca:air:7.0">REDUCTED</UniqueTransmissionId>
<Timestamp xmlns="urn:us:gov:treasury:irs:common">2016-04-01T11:02:58Z</Timestamp>
</abh:ACABusinessHeader>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ACABulkRequestTransmitterStatusDetailRequest u:Id="_2" version="1.0" xmlns="urn:us:gov:treasury:irs:msg:irstransmitterstatusrequest">
<ACABulkReqTrnsmtStsReqGrpDtl xmlns="urn:us:gov:treasury:irs:ext:aca:air:7.0">
<ReceiptId xmlns="urn:us:gov:treasury:irs:common">Receit Id</ReceiptId>
</ACABulkReqTrnsmtStsReqGrpDtl>
</ACABulkRequestTransmitterStatusDetailRequest>
</s:Body>
ОБНОВЛЕНИЕ1: Я все больше и больше убежден, что что-то не так с нашей службой сертификации и статусом. Похоже, они не могут сопоставить идентификатор квитанции с соответствующим сертификатом. По крайней мере, они подтвердили, что структурно нет ничего плохого в XML, который я им отправлял. Но они не могут определить актуальную проблему. IRS попросил, чтобы я недавно отправил им мой запрос в электронном письме еще раз для дальнейшего расследования, которое я сделал. Теперь буду ждать и c тем, что будет.
2 ответа
Ну, короче говоря. Статус сервис сейчас работает. В конце концов команда разработчиков IRS back'n'forthing удалила клиентские конфигурации, которые были помечены как удаленные, и после этого, похоже, у службы статуса появился дух для работы. Я немного устал от того, как ситуация разрешилась, но если она в итоге начала работать - пусть будет так!
(У меня недостаточно репутации, чтобы добавить комментарий)
@fatherOfWine, я заметил, что элемент InclusiveNamespaces отсутствует в ваших элементах Transform. Извините за то, что вы, возможно, уже знаете, включенные пространства имен учитываются при канонизации XML и, в конечном итоге, при вычислении дайджестов SHA1.
Отправьте электронное письмо в службу технической поддержки IRS ACA и попросите их просмотреть свои журналы, если три отправленных вами дайджест-значения соответствуют или соответствуют их расчетам. Они смогут по крайней мере определить, какие из ваших значений дайджеста проходят и не проходят свои проверки. Сообщите им TCC и местное время, когда вы отправили запрос.