WS-Security for CDA Persistence Web Service

In HDR, the CDA Persistence Web service is implemented with WS-Security UserName Token profile. The Web service client has to supply UserName and Password in SOAP Header of the SOAP request that will be used to load the CDA Persistence Web service. The WebLogic server performs the user authentication using the Web service client provided UserName and Password values.

Sample CDA Persistence --> persistDocument Web Service SOAP request

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:orac="http://oracle.apps.ctb.cdapersistence.types">
 
   <soap:Header>
 
      <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 
         <wsse:UsernameToken wsu:Id="UsernameToken-10">
 
            <wsse:Username>IHE_XDS_USER</wsse:Username>
 
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"><USER_PASSWORD></wsse:Password>
 
         </wsse:UsernameToken>
 
      </wsse:Security>
 
   </soap:Header>
 
   <soap:Body>
 
   <orac:PersistCDADocumentRequest>
 
<orac:Document>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhLS0gZWRpdGVkIHdpdGggWE1MU3B5IHYyMDExIChodHRwOi8vd3d3LmFsdG92YS5jb20pIGJ5IExlbiBHYWxsYWdoZXIgKE5JU1QpIC0tPg0KPCEtLVNhbXBsZSBYTUwgZmlsZSBnZW5lcmF0ZWQgYnkgWE1MU3B5IHYyMDA3IHNwMiAoaHR0cDovL3d3dy5hbHRvdmEuY29tKS0tPg0KPENsaW5pY2FsRG9jdW1lbnQgeG1sbnM9InVybjpobDctb3JnOnYzIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6c2NoZW1hTG9jYXRpb249InVybjpobDctb3JnOnYzIGh0dHA6Ly94cmVnMi5uaXN0Lmdvdjo4MDgwL2hpdHNwVmFsaWRhdGlvbi9zY2hlbWEvY2RhcjJjMzIvaW5mcmFzdHJ1Y3R1cmUvY2RhL0MzMl9DREEueHNkIj4NCgk8cmVhbG1Db2RlIGNvZGU9IlVTIi8+DQoJPHR5cGVJZCByb290PSIyLjE2Ljg0MC4xLjExMzg4My4xLjMiIGV4dGVuc2lvbj0iUE9DRF9IRDAwMDA0MCIvPg0KCTx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjMuMjcuMTc3NiIgYXNzaWduaW5nQXV0aG9yaXR5TmFtZT0iQ0RBL1IyIi8+DQoJPHRlbXBsYXRlSWQgcm9vdD0iMi4xNi44NDAuMS4xMTM4ODMuMTAuMjAuMyIgYXNzaWduaW5nQXV0aG9yaXR5TmFtZT0iSEw3L0NEVCBIZWFkZXIiLz4NCgk8dGVtcGxhdGVJZCByb290PSIxLjMuNi4xLjQuMS4xOTM3Ni4xLjUuMy4xLjEuMSIgYXNzaWduaW5nQXV0aG9yaXR5TmFtZT0iSUhFL1BDQyIvPg0KCTx0ZW1wbGF0ZUlkIHJvb3Q9IjIuMTYuODQwLjEuMTEzODgzLjMuODguMTEuMzIuMSIgYXNzaWduaW5nQXV0aG9yaXR5TmFtZT0iSElUU1AvQzMyIi8+DQoJPGlkIHJvb3Q9IjIuMTYuMy41LjYiIGV4dGVuc2lvbj0iVGVzdDAxX0NDRDM5MCIgYXNzaWduaW5nQXV0aG9yaXR5TmFtZT0iTklTVCBIZWFsdGhjYXJlIFByb2plY3QiLz4NCgk8IS0tVGhlIEhMNy9DQ0Qgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IGV2ZXJ5IENDRCBDbGluaWNhbERvY3VtZW50IGNvbnRhaW4gdGhlICBzcGVjaWZpYyBMT0lOQyBjb2RlIDM0MTMzLTkuIE5vdGUgdGhhdCBNZWFuaW5nZnVsIFVzZSBkZWZlcnMgdG8gSUhFIHNwZWNpZmljYXRpb25zIHdoaWNoIGRvIG5vdCByZXF1aXJlIHRoZSBDQ0QgdGVtcGxhdGVJZCBvbiB0aGUgZG9jdW1lbnQgaXRzZWxmLCB0aHVzIGFsbG93aW5nIG90aGVyIGNvZGVzIHRvIGJlIHVzZWQgYXQgdGhpcyBsb2NhdGlvbi4gVG8gYXZvaWQgY29uZnVzaW9uIGl0IG1heSBiZSBiZXN0IHRvIHN0aWNrIHdpdGggdGhpcyBjb2RlIGFzIGZpeGVkIGluIHRoZSBhYnNlbmNlIG9mIGFub3RoZXIgcmVxdWlyZWQgc3Vic3RpdHV0ZS4tLT4NCgk8Y29kZSBjb2RlPSIzNDEzMy05IiBkaXNwbGF5TmFtZT0iU3VtbWFyaXphdGlvbiBvZiBlcGlzb2RlIG5vdGUiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjYuMSIgY29kZVN5c3RlbU5hbWU9IkxPSU5DIi8+DQoJPHRpdGxlLz4NCgk8ZWZmZWN0aXZlVGltZSB2YWx1ZT0iMjAxMDEwMjYxMzA5NDUiLz4NCgk8Y29uZmlkZW50aWFsaXR5Q29kZS8+DQoJPGxhbmd1YWdlQ29kZSBjb2RlPSJlbi1VUyIvPg0KCTxyZWNvcmRUYXJnZXQ+DQoJCTxwYXRpZW50Um9sZT4NCgkJCTwhLS1UaGUgSElUU1AvQzMyIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhhdCBjZXJ0YWluIHBhdGllbnQgZWxlbWVudHMgYmUgcHJlc2VudCwgYnV0IGRvZXMgbm90IHJlcXVpcmUgdGhhdCB0aGV5IGJlIG5vbi1lbXB0eS4gQSBtZWFuaW5nZnVsIGRvY3VtZW50IHNob3VsZCBjb250YWluIGVpdGhlciBhIGNvbXBsZXRlIHBhdGllbnRSb2xlL0lkIG9yIGF0IGxlYXN0IGdpdmVuIGFuZCBmYW1pbHkgbmFtZXMuLS0+DQoJCQk8aWQvPg0KCQkJPGFkZHI+DQpOb25lIG9mIHRoZSBmb2xsb3dpbmcgYWRkcmVzcyBlbGVtZW50cyBhcmUgc3BlY2lmaWNhbGx5IHJlcXVpcmVkIGJ5IEhJVFNQIEMzMiwgc28gdGhlIGFkZHJlc3MgY291bGQgYmUganVzdCBwbGFpbiB0ZXh0IGF0IHRoaXMgbG9jYXRpb24/IFVzZSBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIGxhYmVsZWQgYWRkcmVzcyBsaW5lcywgd2l0aCBtZWFuaW5nZnVsIGNvbnRlbnQsIGlzIGVuY291cmFnZWQuDQoJCQkJPHN0cmVldEFkZHJlc3NMaW5lLz4NCgkJCQk8c3RyZWV0QWRkcmVzc0xpbmUvPg0KCQkJCTxjaXR5Lz4NCgkJCQk8c3RhdGUvPg0KCQkJCTxwb3N0YWxDb2RlLz4NCgkJCQk8Y291bnRyeS8+DQoJCQk8L2FkZHI+DQoJCQk8dGVsZWNvbS8+DQoJCQk8cGF0aWVudD4NCgkJCQk8bmFtZT4NCgkJCQkJPGdpdmVuLz4NCgkJCQkJPGdpdmVuLz4NCgkJCQkJPGZhbWlseS8+DQoJCQkJPC9uYW1lPg0KCQkJCTwhLS1ISVRTUC9DODMgcmVxdWlyZXMgcGF0aWVudCBhZG1pbmlzdHJhdGl2ZSBnZW5kZXIsIGUuZy4gTSwgRiwgSSAoaW5kZXRlcm1pbmF0ZSktLT4NCgkJCQk8YWRtaW5pc3RyYXRpdmVHZW5kZXJDb2RlIGNvZGU9IkYiIGRpc3BsYXlOYW1lPSJGZW1hbGUiIGNvZGVTeXN0ZW09IjIuMTYuODQwLjEuMTEzODgzLjUuMSIgY29kZVN5c3RlbU5hbWU9IkhMNyBBZG1pbmlzdHJhdGl2ZUdlbmRlciIvPg0KCQkJCTwhLS1ISVRTUC8zMiB3aXRoIElIRSBlbmhhbmNlbWVudHMgcmVxdWlyZXMgdGhhdCB0aGUgcGF0aWVudCBiaXJ0aFRpbWUgZWxlbWVudCBiZSBwcmVjaXNlIGF0IGxlYXN0IHRvIHllYXIgYW5kIHN0YXRlcyB0aGF0IGl0IHNob3VsZCBiZSBwcmVjaXNlIGF0IGxlYXN0IHRvIGRheS4gLS0+DQoJCQkJPGJpcnRoVGltZSB2YWx1ZT0iMTk4NDA3MDQiLz4NCgkJCTwvcGF0aWVudD4NCgkJPC9wYXRpZW50Um9sZT4NCgk8L3JlY29yZFRhcmdldD4NCgk8YXV0aG9yPg0KCQk8IS0tSElUU1AvMzIgd2l0aCBJSEUgZW5oYW5jZW1lbnRzIHJlcXVpcmVzIHRoYXQgdGhlIGF1dGhvciB0aW1lIGVsZW1lbnQgYmUgcHJlY2lzZSBhdCBsZWFzdCB0byBkYXkgYW5kIHN0YXRlcyB0aGF0IGl0IHNob3VsZCBiZSBhIHRpbWVzdGFtcCB3aXRoIHByZWNpc2lvbiBhdCBsZWFzdCB0byBzZWNvbmQuIC0tPg0KCQk8dGltZSB2YWx1ZT0iMjAxMDEwMjYxNDU3MzAiLz4NCgkJPGFzc2lnbmVkQXV0aG9yPg0KCQkJPGlkLz4NCgkJCTxhZGRyLz4NCgkJCTx0ZWxlY29tLz4NCgkJCTxhc3NpZ25lZFBlcnNvbj4NCgkJCQk8bmFtZS8+DQoJCQk8L2Fzc2lnbmVkUGVyc29uPg0KCQkJPHJlcHJlc2VudGVkT3JnYW5pemF0aW9uPg0KCQkJCTxuYW1lPk5JU1QgSGVhbHRoY2FyZSBUZXN0aW5nIExhYm9yYXRvcnk8L25hbWU+DQoJCQkJPHRlbGVjb20vPg0KCQkJCTxhZGRyLz4NCgkJCTwvcmVwcmVzZW50ZWRPcmdhbml6YXRpb24+DQoJCTwvYXNzaWduZWRBdXRob3I+DQoJPC9hdXRob3I+DQoJPGN1c3RvZGlhbj4NCgkJPGFzc2lnbmVkQ3VzdG9kaWFuPg0KCQkJPHJlcHJlc2VudGVkQ3VzdG9kaWFuT3JnYW5pemF0aW9uPg0KCQkJCTxpZC8+DQoJCQkJPG5hbWUvPg0KCQkJCTx0ZWxlY29tLz4NCgkJCQk8YWRkci8+DQoJCQk8L3JlcHJlc2VudGVkQ3VzdG9kaWFuT3JnYW5pemF0aW9uPg0KCQk8L2Fzc2lnbmVkQ3VzdG9kaWFuPg0KCTwvY3VzdG9kaWFuPg0KCTxjb21wb25lbnQ+DQoJCTxub25YTUxCb2R5Pg0KCQkJPHRleHQvPg0KCQk8L25vblhNTEJvZHk+DQoJPC9jb21wb25lbnQ+DQo8L0NsaW5pY2FsRG9jdW1lbnQ+DQo=</orac:Document>
 
         <!--Optional:-->
 
         <orac:DocumentId>2.16.3.5.6^Test01_CCD390</orac:DocumentId>
 
      </orac:PersistCDADocumentRequest>
 
   </soap:Body>
 
</soap:Envelope>

where the user provided underneath the SOAP Header should have already been created under WebLogic default Security Realm myrealm.

Sample for successful CDA Persistence --> persistDocument Web Service SOAP response

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:orac="http://oracle.apps.ctb.cdapersistence.types">
 
    <soap:Body>
 
      <orac: PersistCDADocumentResponse >
 
         <orac:status>SUCCESS</orac:status>
 
      </orac: PersistCDADocumentResponse >
 
   </soap:Body>
 
</soap:Envelope>

Sample CDA Persistence à importDocument Web Service SOAP request

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:orac="http://oracle.apps.ctb.cdapersistence.types">
 
   <soap:Header>
 
      <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 
         <wsse:UsernameToken wsu:Id="UsernameToken-10">
 
            <wsse:Username>IHE_XDS_USER</wsse:Username>
 
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"><USER_PASSWORD></wsse:Password>
 
         </wsse:UsernameToken>
 
      </wsse:Security>
 
   </soap:Header>
 
   <soap:Body>
 
      <orac:ImportCDADocumentRequest>
 
        <orac:DocumentUniqueId>1.1.1.1.1.1.53351113</orac:DocumentUniqueId>
 
      </orac:ImportCDADocumentRequest>
 
   </soap:Body>
 
</soap:Envelope>

where the user provided under the SOAP Header should have already been created under WebLogic default Security Realm myrealm.

Sample for successful CDA Persistence --> importDocument Web Service SOAP response

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:orac="http://oracle.apps.ctb.cdapersistence.types">
 
    <soap:Body>
 
      <orac: ImportCDADocumentResponse >
 
         <orac:status>SUCCESS</orac:status>
 
      </orac: ImportCDADocumentResponse >
 
   </soap:Body>
 
</soap:Envelope>