生成外发 MDN

AS2 接收管道为传入消息生成 MDN(消息处置通知)响应。 这是由 AS2EDIReceive 接收管道中的 EDI 反汇编程序管道组件(响应 EDI 编码的消息)或 AS2 反汇编程序管道组件在 AS2Receive 接收管道中执行(响应非 EDI 编码消息)。

何时以及如何生成 MDN

MDN 通常基于原始 AS2 消息中的 AS2 标头生成,如下所示:

  • 如果在 AS2 消息中存在 Disposition-Notification-To 标头,则会发送 MDN。

  • 如果消息中存在 Disposition-Notification-To 标头和 Receipt-Delivery-Option 标头,则 MDN 将以异步方式发送。 它将通过与原始消息不同的连接发送到收据Delivery-Option 标头中的 URL。

  • 如果消息中存在 Disposition-Notification-To 标头,但消息中不存在回执Delivery-Option 标头,则 MDN 将以与原始消息相同的连接同步发送。

    反汇编程序从接收的 AS2 消息中的 AS2-To 标头在 MDN 中创建 AS2-From 标头,并从收到的 AS2 消息中的 AS2-From 标头在 MDN 中创建 AS2-To 标头。

    BizTalk Server 使你能够更改这些设置,指定是否生成 MDN,以及如何根据参与方的 AS2 协议属性生成它。 在“协议属性”对话框的单向 AS2 协议选项卡中,使用“使用协议设置进行验证和 MDN,而非使用消息头”属性来覆盖消息中的 AS2 标头设置。 此属性使您能够发送 MDN,即使 AS2 标头没有要求它,或者在 AS2 标头指定同步连接时异步发送 MDN。

    如果设置了使用协议设置进行验证和MDN,而不是消息标头属性,则“发送方 MDN 设置”页的“请求 MDN”部分的值将在协议属性对话框的单向 AS2 协议选项卡中用于 MDN,如下所示:

  • 如果选择 “请求 MDN ”属性,则会发送 MDN。

  • 如果选择 了 Request MDN 属性,并且选择了 请求异步 MDN 属性,则 MDN 将以异步方式发送。 MDN 将通过与原始消息不同的连接发送到 回执Delivery-Option(URL) 属性设置为的 URL。

  • 如果选择 了 Request MDN 属性,但未选择 请求异步 MDN 属性,则 MDN 将以与原始消息相同的连接同步发送。

    如果设置了使用协议设置进行验证和 MDN,而不是消息头属性,则消息头中的AS2-From属性将用于生成MDN,而AS2-To将从协议属性中获取,并且管道将根据请求签名的MDN对MDN进行签名。 AS2 标头对应于协议属性,如下所示:

协议属性 消息中的 AS2 标头
生成 MDN 处置 -Notification-To
对 MDN 进行签名 已签名 -Receipt-Protocol
收据 -Delivery-Option 收据 -Delivery-Option

如果启用了 MDN,接收管道将提升以下上下文属性:

  • EdiIntAS.DispositionMode

  • EdiIntAS.DispositionType

    为了生成 MDN,必须提升这两个上下文属性。 有关这些上下文属性的详细信息,请参阅 AS2 上下文属性

    如果传入消息中的配置设置和标头不一致,管道将生成负 MDN。

    如果在协议属性中请求 MDN,则即使 AS2 处理中发生错误,接收管道也会尝试发送 MDN。

接收管道如何处理所生成的 MDN

如果根据上述规则生成 MDN,AS2EDIReceive 或 AS2Receive 接收管道将处理 MDN,如下所示:

  • 如果在单向 AS2 协议属性中启用,则将 MDN(以线路格式)复制并存储在不可否认数据库中。

  • 在单向 AS2 协议属性中启用时,执行 MIME 处理,包括应用数字签名。

  • 计算 AS2 消息负载的 MIC(消息完整性检查),然后将其追加到 MDN 的 Received-content-MIC 扩展字段。 要应用于 MIC 的算法由传入消息的签收回执 micalg 标头确定,或者由“协议属性”对话框的单向协议选项卡的发件人 MDN 设置页上的签名算法属性确定(在覆盖入站消息属性时)。 它可以是 SHA1 或 MD5。 该算法的值也包含在 MDN 中。

  • 在不可否认数据库中创建关联条目。

  • 创建 MDN 消息的副本。

  • 如果要同步传输 MDN,管道会将 EdiIntAS.IsAS2AsynchronousMDN 属性设置为 False;如果以异步方式将属性设置为 True。

  • 如果需要同步传输 MDN,则与双向接收端口关联的 AS2Send 发送管道将根据 EdiIntAS.IsAS2AsynchronousMDN 属性(设为 False)和相关标记来获取 MDN。

    注释

    还可以设置一个发送端口以订阅同步传出的 MDN。 为此,请将发送端口筛选器设置为 EdiIntAS.IsAS2MdnResponseMessage==True

  • 如果要异步传输 MDN,则接收管道会将 MDN 路由到 MessageBox。 必须设置一个发送端口来订阅 MDN,并将发送端口筛选器设置为 IsAS2AsynchronousMdn==True。 AS2Send 发送管道根据该属性和相关令牌提取消息。 如果发送端口是动态的,它将根据消息头中“收据-Delivery-Notification”行指定的地址路由 MDN。 如果发送端口是静态的,它将基于发送端口的传输 URI 属性路由消息。

MDN 生成规则

以下规则适用于 MDN 生成:

  • 当消息发送方专门请求签名回执,但处理邮件内容时出错,消息接收方仍必须返回已签名的回执,即使事务本身可能无效。 处理消息内容时出错的原因必须在“disposition-field”中设置。

  • 当 MDN 回执的请求显式指定收据已签名,但原始消息的接收方不支持请求的协议格式或请求的 MIC 算法时,应返回已签名或未签名的收据。

  • 如果未显式请求签名,或者接收方协议无法识别签名回执请求参数,则接收方可能会返回未签名的收据、签名回执或未收到收据。

MIC 生成

当需要 MDN 时,原始消息的接收方将生成 MIC(消息完整性检查),并将其添加到 MDN。 当 EDI 交换是多部分 MIME 内容类型的一部分时,必须跨整个多部分内容(包括 EDI 交换和 MIME 标头)计算 MIC。 对于加密的未签名消息,将在解密的 MIME 标头和内容上计算要返回的 MIC。 对于未签名的未加密消息,必须在没有 MIME 标头的消息内容上计算 MIC。

另请参阅

BizTalk Server 如何接收 AS2 消息