MODULAR PILOT TRANSPORT DESIGN DOCUMENT (DRAFT) Office of the National Coordinator for Health Information Technology Version 1.0 May 4, 2011 Prepared By: ONC S&I RI/DP Team DISTRIBUTION STATEMENT The Transport Module Design is to be used by the Reference Implementation designers and developers to design and develop the main components of the transport layer that can be composed to provide the specified services in a scalable, extensible and reliable manner. Modular Pilot Transport Design Document Draft - May 4, 2011 DOCUMENT CHANGE HISTORY Version 1.0 Date 05/04/2011 Changed By Lockheed Martin Items Changed Since Previous Version First Draft i Modular Pilot Transport Design Document Draft - May 4, 2011 TABLE OF CONTENTS 1.0 OBJECTIVE/PURPOSE...................................................................................................................1 2.0 REQUIREMENTS/GOALS ..............................................................................................................1 3.0 CONSTRAINTS AND ASSUMPTIONS .............................................................................................1 3.1 3.2 CONSTRAINTS ................................................................................................................................... 1 ASSUMPTIONS\ ................................................................................................................................. 2 4.0 DEPENDENCIES ............................................................................................................................2 5.0 CODE RE-USE ...............................................................................................................................2 6.0 ARCHITECTURE ............................................................................................................................3 6.1 DESIGN DIAGRAMS ............................................................................................................................ 3 6.2 SEQUENCE DIAGRAMS ........................................................................................................................ 3 6.3 INTERFACES .................................................................................................................................... 10 6.3.1 Transport Facade Interface .................................................................................................... 10 6.3.2 Certification Service Interface ................................................................................................ 10 6.3.3 State Handler Interface .......................................................................................................... 10 6.3.4 Session Handler Interface ....................................................................................................... 10 7.0 REFERENCES .............................................................................................................................. 10 LIST OF FIGURES FIGURE 1. PACKAGE DIAGRAM ................................................................................................................................... 3 FIGURE 2 TRANSPORT CORE SYNCHRONOUS REQUEST - INITIATING GATEWAY .................................................................... 4 FIGURE 3. TRANSPORT CORE SYNCHRONOUS REQUEST - RESPONDING GATEWAY ................................................................ 5 FIGURE 4. TRANSPORT CORE - DEFERRED WORKFLOW - INITIATING GATEWAY .................................................................... 6 FIGURE 5. TRANSPORT CORE - DEFERRED WORKFLOW - RESPONDING GATEWAY - SEND ACKNOWLEDGEMENT ......................... 7 FIGURE 6. SEQUENCE DIAGRAM - TRANSPORT CORE DEFERRED RESPONSE - INITIATING GATEWAY - RECEIVE RESPONSE ............. 9 ii Modular Pilot Transport Design Document Draft - May 4, 2011 1.0 OBJECTIVE/PURPOSE This document provides a high-level design of the Reference Implementation (RI) Transport Module Core components. These components are used by Request and Response Orchestrator components of RI Gateway to address the requirements of the Transport Module specification. Specifically, these components are used by the initiating RI Gateway to validate the incoming request information and to add WS-Addressing headers. In Deferred Request/response mode, these components handle the state and session creation and maintenance. On the Responding RI Gateway, the transport core components are used to validate the request (general conformance), validate the namespaces, validate the WS-Addressing headers, and validate the certificate. 2.0 REQUIREMENTS/GOALS The goals of the Transport Core design are to: Provide a design to address the functional requirements of Transport module. Identify and define components for non-overlapping functionalities of Transport Module. Code to interfaces, not implementations. Promote code reuse. Achieve ease of integration. Be extensible. Couple loosely with other components. Achieve ease of Unit testing and Integration testing. 3.0 CONSTRAINTS AND ASSUMPTIONS 3.1 CONSTRAINTS The Transport Module is required to support two central architectural principles of the Nationwide Health Information Network: Use the public Internet – The Nationwide Health Information Network is not a separate physical network, but a set of protocols and standards that enable secure health information exchange via the public Internet. Platform neutral – The Nationwide Health Information Network has adopted a stack (web services) that can be implemented using many operating systems and programming languages. 1 Modular Pilot Transport Design Document Draft - May 4, 2011 The Transport Module will be based on Simple Object Access Protocol (SOAP) 1.2 messages over HyperText Transport Protocol (HTTP). All higher-level messaging elements and attachments must be bound to a SOAP message. This excludes the use of incompatible transport protocols such as Health Level Seven (HL7) Minimal Lower Layer Protocol (MLLP) for National Health Information Organization (NHIO)-to-NHIO messaging. The NHIN Messaging Specification restricts the use of the WS-Addressing ReplyTo and FaultTo elements to the predefined anonymous endpoint reference. Reliable messaging should be available to support specific information exchanges, but it is not a requirement for every NHIN service. The cipher suite recommendation from the Organization for the Advancemnt of Structured Information Standards (OASIS) committee for SAML2.0 over the Transport Layer Security (TLS) protocol was for forward-looking applications to implement TLS_RSA_WITH_AES_128_CBC_SHA, which has both speed and security strength. This translates to the Basic128 algorithm suite as defined in the WS-SecurityPolicy and is declared within the sp:AlgorithmSuite assertion. 3.2 ASSUMPTIONS\ Each NHIO is responsible for the authentication and authorization of its users. Each hosting organization is capable of providing an administration point and an information point for Access Consent Policy. X.509 certificates will be used by all NHIOs, following a process defined by the Office of the National Coordinator for Health Information Technology (ONC). The fact that all certificates are issued by following the same process will serve as the basis of trust and authentication between NHIOs; all messages between NHIOs are both signed and encrypted using these certificates. Transport Module does not have to define any custom SOAP faults. It is the responsibility of the other NHIN specifications that use the Transport Module. 4.0 DEPENDENCIES The Transport core components will use the RI Core components like Logging, Exception Handling, Data Access Object (DAO), Utilities, etc. 5.0 CODE RE-USE Transport Core's SOAPProcessor component can be reused by other modules for getting the SOAP Message parts like Header, Body, etc. Transport Core's Certification Service can be reused by Security Module for retreiving a certificate from Keystore, etc. 2 Modular Pilot Transport Design Document Draft - May 4, 2011 6.0 ARCHITECTURE The intent of this design is to identify and define the interfaces the Transport Core exposes, the interfaces that are used by the Transport Core, and to expand upon the high-level components defined in the Transport Module Architecture document. TransportFacade is the interface with which other modules communicate with the Transport Core subsystem. The default implementation interacts with the other classes within the subsystem for addressing necessary functionality. This default implementation can be extended by other variants of Transport Core implementation. Transport Core subsystem relies on RI Core components for logging, exception handling, utilities, etc. Appropriate interfaces of RI core will be used by Transport Core. 6.1 DESIGN DIAGRAMS The following diagram shows the packages where the Transport Core components reside and the dependencies with other packages of the RI Gateway. Figure 1. Package Diagram 6.2 SEQUENCE DIAGRAMS The following diagram shows the sequence of operations that are performed using the Transport core components as part of initiating a request from the Gateway. 3 Modular Pilot Transport Design Document Draft - May 4, 2011 Figure 2 Transport Core Synchronous Request - Initiating Gateway 4 RI Transport Arch. Design Delivery Date: May 4, 2011 The following diagram shows the sequence of operations that are performed using the Transport core components as part of responding to a request on the Responding Gateway. Figure 3. Transport Core Synchronous Request - Responding Gateway 5 RI Transport Arch. Design Delivery Date: May 4, 2011 The following diagram shows the sequence of operations that are performed using the Transport core components as part of initiating a request on the Initiating Gateway in Deferred request/response mode. Figure 4. Transport Core - Deferred workflow - Initiating Gateway 6 RI Transport Arch. Design Delivery Date: May 4, 2011 The following diagram shows the sequence of operations that are performed using the Transport core components as part of an acknowledgement to a request on the Responding Gateway in Deferred request/response mode. Figure 5. Transport Core - Deferred workflow - Responding Gateway - Send Acknowledgement 7 RI Transport Arch. Design Delivery Date: May 4, 2011 The following diagram shows the sequence of operations that are performed using the Transport core components as part of initiating a request (this request is actually a response to an earlier deferred request) on the Responding Gateway in Deferred request/response mode. Figure Transport Core - Deferred Workflow - Responding Gateway - Send Response 8 RI Transport Arch. Design Delivery Date: May 4, 2011 The following diagram shows the sequence of operations that are performed using the Transport core components as part of acknowledging to a request on the Initiating Gateway in Deferred request/response mode. Figure 6. Sequence Diagram - Transport Core Deferred Response - Initiating Gateway - Receive Response 9 RI Transport Arch. Design Delivery Date: May 4, 2011 6.3 INTERFACES 6.3.1 TRANSPORT FACADE INTERFACE This interface is the primary interface used by other modules to communicate with the Transport Core subsystem. It provides a means to validate requests, build headers, etc. 6.3.2 CERTIFICATION SERVICE INTERFACE Transport Core uses this interface internally to validate certificates and to check a certificate against the Certificate Revocation List (CRL) or the Online Certificate Status Protocol (OCSP) service. Security Module will use this interface to retrieve a certificate, given some identifying information such as an alias of the certificate. 6.3.3 STATE HANDLER INTERFACE Transport Core uses this interface internally. The default implementation will persist the state of the requests/responses in deferred workflow mode. Currently, the state is persisted in an objectoriented database, db4o. This interface can be extended to provide a different implementation. 6.3.4 SESSION HANDLER INTERFACE Transport Core uses this interface internally. The default implementation will persist the responses received in deferred workflow mode. These responses will be persisted until the requester retrieves it or until a set time period, configurable by the user, elapses. Then the responses will be purged. Currently, the responses are persisted in an object-oriented database, db4o. This interface can be extended to provide a different implementation. 7.0 REFERENCES The following references were used to produce this document: 1. NHIN Messaging Platform Specification document (Production), available at http://healthit.hhs.gov/portal/server.pt/gateway/PTARGS_0_11673_910523_0_0_18/NHI N_MessagingPlatformProductionSpecification_v2.0.pdf 2. Modular Pilot Architecture Transport Module (DRAFT) (Modular_Trnsprt_Arch_1_0_Final.docx), available at http://jira.siframework.org/wiki/display/MSP/Reference+Implementation+Team 10