Messaggi MDN
Il messaggio MDN (Message Disposition Notification) è il riconoscimento inviato in risposta a un messaggio AS2. Se un MDN è abilitato, la trasmissione AS2 non viene completata fino a quando non viene ricevuto e verificato il messaggio MDN. BizTalk Server tenterà sempre di restituire un messaggio MDN per indicare lo stato dell'elaborazione dei messaggi, anche se si è verificato un errore durante l'elaborazione del messaggio AS2.
Il messaggio MDN consente di effettuare le seguenti verifiche:
Che il messaggio originale sia stato ricevuto correttamente dall'entità ricevente. Il mittente del messaggio originale effettua questa verifica confrontando l'ID del messaggio originale inviato con il campo original-message-id incluso dal ricevitore nel messaggio MDN.
L'integrità dei dati scambiati è stata verificata dal partner ricevente. Il mittente del messaggio originale effettua questa verifica confrontando il MIC calcolato dal payload del messaggio originale inviato con il MIC calcolato dal ricevitore sul payload del messaggio ricevuto e incluso nel campo Received-content-MIC del messaggio MDN, se firmato.
Che c'è un non ripudio della ricevuta. Il mittente effettua questo controllo verificando il messaggio MDN firmato con la chiave pubblica del partner di ricezione e assicurandosi che il valore MIC restituito nel messaggio MDN sia uguale al MIC del payload del messaggio originale archiviato nel database di non ripudio.
Nota
Un messaggio MDN sincrono funge da risposta HTTP, ad esempio 200 OK.
Nota
Per altre informazioni sull'elaborazione lato ricezione di MDN, vedere Elaborazione di un mdn in ingresso. Per altre informazioni sull'elaborazione lato invio di MDN, vedere Invio di un mdn in uscita.
La pipeline di ricezione AS2Receive genererà un MDN usando le proprietà del contratto AS2 di una parte se nella finestra di dialogo Proprietà contratto è selezionata l'opzione Usa le impostazioni del contratto per la convalida e mdn anziché la proprietà dell'intestazione del messaggio. In questo caso, la proprietà AS2-From nell'intestazione del messaggio verrà utilizzata per la generazione del messaggio MDN, ma le altre proprietà verranno ricavate dalle impostazioni dell'accordo AS2 dell'entità.
Se l'opzione per ignorare la proprietà AS2 non è selezionata o l'accordo AS2 dell'entità è disponibile, la pipeline di ricezione genererà il messaggio MDN utilizzando i tag dell'intestazione AS2 nel messaggio in ingresso.
Il messaggio MDN può essere firmato, ma non può essere crittografato o compresso.
Le proprietà di contesto utilizzate nell'elaborazione dei messaggi MDN includono le proprietà che possono essere innalzate di livello e le proprietà che non sono esposte pubblicamente ma possono essere viste nei messaggi sospesi o rilevati. Per un elenco di queste proprietà di contesto, vedere Proprietà del contesto AS2.
Per consentire la generazione di un messaggio MDN, è necessario che entrambe le proprietà di contesto DispositionMode e DispositionType vengano innalzate di livello. Se si verifica un errore nel payload AS2 o EDI, la proprietà DispositionType indicherà l'errore. È possibile visualizzare questa proprietà nella finestra di dialogo Dettagli messaggio visualizzata (tramite la finestra di dialogo Dettagli servizio) dalle istanze del servizio sospese nella pagina Hub di gruppo della console di amministrazione di BizTalk Server. Se si verifica un errore nell'intestazione, BizTalk Server indicherà l'errore nella proprietà DispositionType e tenterà di inviare l'mdn, ma a seconda dell'errore, potrebbe non essere possibile farlo.
Nel messaggio MDN sono contenute le intestazioni seguenti:
Intestazioni HTTP/AS2. Per altre informazioni, vedere Messaggi AS2.
Livello di trasferimento. Include l'intestazione Content-Type contenente il messaggio multiparte firmato, l'algoritmo per il MIC, il protocollo di formattazione della firma e le sottointestazioni limite multiparte più esterne.
Prima parte. La prima parte di un messaggio firmato multiparte è il messaggio MDN incorporato. Il testo è leggibile.
Seconda parte. La seconda parte del messaggio firmato multiparte contiene la firma digitale, un riferimento al messaggio originale, lo stato e il tipo di disposizione e il valore MIC. Il testo non è leggibile.
Le proprietà di contesto dell'intestazione AS2-From, AS2-To e MessageID vengono utilizzate per porre in correlazione un messaggio MDN con il messaggio AS2 a cui si risponde. L'intestazione Original-Message-ID di un messaggio MDN proviene dall'intestazione Message-ID del messaggio AS2 a cui risponde il messaggio MDN.
Il MIC (Message Integrity Check) viene utilizzato per verificare che un messaggio MDN venga correlato al payload del messaggio originale inviato. Il digest MIC è incluso nel campo dell'estensione Received-Content-MIC nella seconda parte del messaggio MDN firmato multiparte.
Se è abilitato un MDN, quando la pipeline di trasmissione AS2 elabora un messaggio in uscita, viene calcolato un MICHashValue dal payload del messaggio. La pipeline di trasmissione salva il valore hash nella tabella EdiInt_Mic del database BizTalkMsgBoxDb. I messaggi AS2 vengono rilevati in questa tabella, identificata in modo univoco dai valori AS2From, AS2To e MessageID, con una colonna MICHashValue. Il ricevitore del messaggio calcola il valore hash MIC quando elabora il payload del messaggio e include il valore hash nel messaggio MDN restituito. Il mittente del messaggio originale confronterà il valore hash MIC nel messaggio MDN che riceve con il valore hash salvato. Se i valori corrispondono, il messaggio MDN e la voce della tabella EdiInt_Mic vengono eliminati, quindi la trasmissione è completata.
Il MIC è con codifica base64. L'algoritmo da applicare per il MIC può essere SHA1 o MD5. Viene determinato dall'elenco a discesa Algoritmo di firma (abilitato se la proprietà MDN firmata richiesta è selezionata) nella pagina Impostazioni MDN mittente della scheda Contratto unidirezionale della finestra di dialogo Proprietà contratto . È determinato anche dall'intestazione AS2 Signed-Receipt-MICalg del messaggio originale.
Messaggi AS2
Elaborazione di un MDN in ingresso
Invio di un messaggio MDN in uscita