Как использовать "цитируемое-печатаемое" кодирование передачи контента с получением BizTalk AS2? - PullRequest
1 голос
/ 20 января 2020

В настоящее время я использую BizTalk Server 2013 R2 для обмена EDI, а также не-EDI-документами с использованием AS2 с рядом различных торговых партнеров. Недавно я добавил нового торгового партнера, и после успешного получения ряда документов я начал время от времени видеть эту ошибку:

Выходное сообщение компонента "Microsoft.BizTalk.EdiInt.PipelineComponents" в приемном конвейере "Microsoft.BizTalk.EdiInt.DefaultPipelines.AS2Receive, Microsoft.BizTalk.Edi.EdiIntPipelines, версия = 3.0.1.0, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35" приостановлен из-за следующей ошибки: Передача содержимого кодировка quoted-printable не поддерживается. . Порядковый номер приостановленного сообщения - 2.

. После некоторого расследования я обнаружил, что платформа AS2 рассматриваемого торгового партнера иногда устанавливает Content-Transfer-Encoding части тела MIME на . для печати в кавычках, когда вложенная полезная нагрузка XML содержит символы не ASCII. Когда это происходит, сообщение приостанавливается (не возобновляется) с указанной выше ошибкой.

Сообщения, полученные от этого торгового партнера, шифруются и подписываются, но не сжимаются - и принимаются с использованием HTTP-запроса-ответа (двусторонний). ) порт настроен с помощью готового конвейера AS2Receive . Я попытался использовать пользовательский конвейер с компонентами AS Decoder, S / MIME decoder и AS2 disassembler, но, похоже, это не дает никакого эффекта - ошибка остается прежней.

Я также пытался получить незашифрованные сообщения от торгового партнера (по взаимному согласию), но, похоже, что-то здесь не так, как и сообщение, передаваемое в ящик сообщений, в результате не разбирается должным образом (границы частей MIME и подпись AS2 по-прежнему видны на самом деле полезная нагрузка сообщения). Так как торговый партнер не разрешит отправку незашифрованных сообщений в производственной среде, мне нужно, чтобы это работало с шифрованием. Они также не могут изменить поведение своей платформы, так как это, как сообщается, повлияет на всех их других торговых партнеров.

Вот развернутые заголовки HTTP (эллипсы обозначают отредактированные значения) зашифрованного и подписанного сообщения AS2, полученного в момент приостановлено:

Date: Mon, 20 Jan 2020 17:30:53 GMT
Content-Length: 8014
Content-Type: application/pkcs7-mime; name="smime.p7m"; smime-type=enveloped-data
From: ...
Host: ...
User-Agent: Jakarta Commons-HttpClient/3.1
AS2-To: ...
Subject: AS2 Message from ... to ...
Message-Id: <1C20200120-173053-740219@xxx.xxx.130.163>
Disposition-Notification-To: <mailto:...> ...
Disposition-Notification-Options: signed-receipt-protocol=optional, pkcs7-signature; signed-receipt-micalg=optional, sha1
AS2-From: ...
AS2-Version: 1.1
content-disposition: attachment; filename="smime.p7m"
X-Original-URL: /as2

Вот незашифрованная (эллипсы обозначает отредактированный контент) полезная нагрузка, когда одно и то же сообщение отправляется исходной стороной без шифрования:

------=_Part_16155_1587439544.1579506174880
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

...
------=_Part_16155_1587439544.1579506174880
Content-Type: application/pkcs7-signature; name=smime.p7s; smime-type=signed-data
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

...
------=_Part_16155_1587439544.1579506174880--

Вопрос: поддерживает ли BizTalk Server метод кодирования quoted-printable ? Если да, что я делаю не так? Если это не так, каковы мои варианты с точки зрения обходного пути?

...