HTTP authentication

There are three options for security when using HTTP as the transport protocol:

HTTP authentication

Many applications require users to provide identifying information. You can restrict access to data based on the authorization level assigned to users.

The Apache implementation of SOAP has an API to set the user ID/password for HTTP basic authentication.

SOAP on Secure Sockets Layer (SSL) with HTTP basic authentication

To make a request over HTTPS, using the SSL support of Apache SOAP, you need a separate Java Secure Socket Extension (JSSE) Link outside Information Center provider. WebSphere Application Server includes the ibmjsse.jar JAR file, which includes these APIs.

The SOAP on SSL scenario is useful for many business-to-business applications because:

For example, if an inventory application is configured as a web service, the service provider has these two SOAP service entries:

Each SOAP service entry should be deployed as a separate enterprise application (EAR) because each service has a different access control policy, which is that anyone can inquire about the inventory but only the inventory clerks can update the contents.

Perform these steps to enable the SOAP on SSL scenario:

  1. Configure the web server (httpd.conf) so that it only allows SSL access to these servlets.
  2. Configure the security role for the RPCRouterServlet in the inquiry services EAR so that the RPCRouterServlet for the inquiry service is accessible by everyone, while the RPCRouterServlet for the 'update' service requires authentication based on the HTTP basic authentication (user ID/password).

In this case, the 'update' application does not know the identity of the requester; it only knows that access is granted.

SOAP on SSL with SOAP signature

Applications might need nonrepudiable proof of exchanged messages. One example is a web service that accepts part orders. The business partners establish a form of trust relationship based on public keys. This can be done using the public key infrastructure (PKI) through a third party certificate authority (CA), or by exchanging public keys through a secure channel. The following service is deployed with a signature verification function: https://a_company.com/partorder.

Configure signature verification with this information:

If the signature is missing or if signature verification fails, the signature verification function can be configured so that the servlet returns a SOAP fault.

To send part orders to the https://a_company.com/partorder service, the service requester should sign her or his SOAP messages with a signature component. The signature component is initialized using two templates:

  1. <ds:SignedInfo> template
  2. <ds:KeyInfo> template

The <ds:SignedInfo> template controls:

The <ds:KeyInfo> template controls:

You can combine the service request with HTTP basic authentication, if necessary.