WS-security specifies extensions to the SOAP message which provide security at message level. WS-security is an extensible protocol so that it can support multiple security models and encryption technology. WS-security focuses on the following areas of security
Like other WS* specification, WS-security implments the concept by putting extra elements in the SOAP header. The basic elements of the WS-security specifications are:
The current version of WS-Security core specification is 1.1 which can be downloaded [http://www.oasis-open.org/committees/download.php/16790/wss-v1.1-spec-os...|here]. WS-security has strived to be extensible so that it can server the basic need of different security models which includes:
What WS-security does is that it specifies a format in which the security information is sent. The information is sent as part of SOAP header. WS-security does not deals with the implementaion details like how the authentication context needs to be set up. In simple terms, WS-security tells that how to specify the security details in the SOAP header. People have been doing custom security handling by introducing their own headers. However this leads to non standardization and tools and frameworks cannot help out. WS-security supports both ((SOAP)) 1.1 and 1.2 version.
WS-security supports the following namespaces:
All the information about security is put in SOAP header in a security element
<soap:Envelope>
<soap:Header>
...
<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secex...
soap:actor="..." soap:mustUnderstand="...">
<!-- All the security information goes here. actor attribute tells who
will process the request. mustUnderstand attribute signifies that this header
should be processed. If unable to process SOAP fault should be raised.-->
</wsse:Security>
...
</soap:Header>
...
</soap:Envelope>
Sending Credentials
The user credentials can be passed as username and passwords.
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>oyejava</wsse:Username>
<wsse:Password>oyejava</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
The user credentials can be sent in encoded format also using BinarySecurityToken
<BinarySecurityToken Id=...
EncodingType=...
ValueType=.../>
Security Token Reference
Let's now understand security token reference. It helps us in refering to the different part of the SOAP message using id.
<soap:Envelope xmlns="...">
<soap:Header>
<wsse:Security
xmlns:wsse="...">
<ds:Signature>
...
<ds:KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="soapBody"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</soap:Header>
<soap:Body>
...
</soap:Body>
</soap:Envelope>
Add new comment