| Last Modified On : | September 19, 2008 4:06 PM PDT |
Rate |
|
by Nitin Grupta
Intel Corporation
In the previous articles of this series, we have explored development of interoperable clients for Web Services. In this article, we look at the issues involved in securing Web Services and various technologies available for the same. We will also explore the security aspects in relation to the interoperability. We will take a look at the new standards being developed for securing Web Services that will provide standardized security services in future. We will also take a quick look at some commercial products available for providing Web Services security. We will also take a look at how Intel is contributing to Web Services Security domain through various initiatives.
This article assumes that the reader is somewhat familiar with the Web Services architecture, IIS and .NET security.
Security fundamentals
There are various security issues related to information security that need to be addressed by any application security solution. These issues become more relevant in a distributed client server environments like Web Services where there information travels over a wide open networking infrastructure. These issues are as follows:
The architecture of Web Services allows the information to be exchanged in plain text due to use of XML/SOAP over HTTP, which is the most preferred transport protocol. This information can be easily intercepted and interpreted by a third party. So providing security becomes even more important.
The above-mentioned security services can be provided at either the transport level or at the application level using SOAP security. This leads to some differences in the various security mechanisms that can be used because all of a sudden the security becomes tied to the capabilities of Web Services provider platform capabilities and effects interoperability as discussed below.
Security in .NET environment
Web Services in the .NET environment are hosted by IIS and thus the built-in security features of IIS can be leveraged in this environment.
Security in Java environment
Web Services related security standards
Another way of securing the Web Services is by securing the data that is being transferred over the underlying non-secure transport protocols like HTTP. We can do this by various techniques discussed below.
SOAP is a simple XML based text message format that is used to build Web Services requests and responses. The SOAP message is broken up into two portions: the SOAP header and the SOAP body. The header is used to hold any potential metadata associated with the request, while the body is used to hold the basic data contents that go along with the message.
To provide message confidentiality, the SOAP message body can contain encrypted message data and the header can contain the session key encrypted with the private key of the message sender. At the receiving end, the session key can be extracted by using the public key of the sender and this session key can then be further used to decrypt and extract the data contained in the SOAP message body. This procedure also provides the guarantee that the message came from the particular user because only that user would have access to the private key that encrypted the session key.
More information about XML encryption can be found at XML Encryption Syntax and Processing* and about XML signature can be found at XML Signature Syntax and Processing*
Similarly, to provide the message integrity, a message digest for the SOAP message body can be generated and sent in the SOAP header. At the receiving end, this hash can be regenerated by the receiver for the SOAP message body and compared against the hash value received in the header. If these two values match, it ensures that the message has not been altered during transit.
This XML based encryption; signatures and integrity verification c an be done with some support from the Web Services stacks both on the server side and client side. More and more toolkits will support these standards as they become more mature and accepted.
Another upcoming standard SAML is going to play an important role in Web Services Security interoperability. SAML, the Security Assertion Markup Language, is a proposed XML-based framework for exchanging authentication and authorization information among disparate Web access management and security products. Using SAML, security information can be expressed as an XML document and securely transmitted from one application to another. It is being standardized through the Organization for the Advancement of Structured Information Standards (OASIS). SAML enables an application to communicate with security systems provided by disparate vendors. SAML defines a vendor-independent XML data format for representing security information. Consequently, software from vendor A can generate information about a user or an access control decision using SAML; this can be consumed by software from vendor B without any disclosure of proprietary algorithms or data formats. More information can be found at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security*.
Some independent vendors have developed products aimed at providing authentication and authorization services for the Web Services. This frees developers from embedding authentication and authorization processing code in each individual Web Service. Products such as TransactionMinder* from Netegrity* provide policy-based authentication, authorization, auditing services based on industry standards like XML Signature and SAML we have discussed earlier. These products allow use of existing user directories and easy user and policy management. Please notice that these products still depend on transport level security for data encryption during transit.
Intel also offers some excellent products for enabling secure Web Services and we will explore those further in the next section.
Intel has been very actively promoting development of an infrastructure to promote adoption of Web Services. Since Web Services security is one of the most important building blocks that needs to be in place for widespread adoption of Web Services in the enterprise, Intel has been doing the following:
There are a lot of different technologies available for Web Services security, a lot of which are somewhat platform dependent. New standards are being developed that will allow more interoperability between different platforms and development toolkits. In spite of these issues, Web Services can be secured in a reliable manner and can expose legacy functionality to the outside world allowing increased productivity and functionality.
Looking forward
In the next article in this series, we will cover some other topics related to Web Services like deployment and performance management.
Nitin Gupta is a senior software engineer with the Enterprise Business Computing Group at Intel. Nitin holds a Masters degree in Computer Science from the University of Southern California. Nitin has over six years of programming and system design experience. He can be contacted at nitin.gupta@intel.com. Read his earlier Intel® Developer Services article, Embrace Cross Platform Interoperability with Web Services.
