phase, in order to minimize the security risks of such
operation. The proxy services will become clients
for the original services, but they will have the right
to make calls to the original services because the
child context in which those reside trusts the context
in which the proxies reside. There are plans to
automate the process completely. The publishing
process would require of course some security
privileges to be given to the child context by the
administrative entity of the parent.
This implication generates a special type of web
service that resides in a parent context: a proxy
service, as described above. This means that a
context can have two types of services: proxies and
regular services. A proxy service can be made
discoverable by clients or not, depending on the
security policies implemented in the security context
it resides in.
As previously mentioned, there are two ways of
implementing a load balancing mechanism. The two
options available are depicted in Figures 1 and 2.
The first method of providing a load balancing
mechanism is depicted in Figure 1. The client sends
a SOAP request to the service which was discovered
before by any means. The message is intercepted by
the envelope and if necessary decrypted using a
context private key. The decrypted message is
passed through to the authenticator unit which
checks the message sender against a context access
control list (CACL). Provided that the CACL
permits the originator to interrogate the given Web
Service, the authenticator passes the message to an
audit/logging unit that will store whatever
information is necessary about the request, the web
service it was addressed to and so forth. The
authentication can be based either on the content of
the SOAP message or on the information that can be
gathered about its origin, although a combination of
the two would provide the most accurate results.
Research is taking place for identifying the best way
of achieving a comprehensive authentication model.
The message is then passed into a central load
balancing unit that decides which service will
actually perform the business logic associated with
the request. This decision can be based on a
multitude of factors, such as:
• The number of identical web services available
to service a request at a certain moment. Using
WS-Addressing it is (theoretically) possible for
a client to make a general request to a service
that has many instances running without having
the knowledge of this. However, the solution is
only provisional since the standard is not final
yet. At the time when this paper is written
(October 2005), the WS-Addressing standard
has been submitted for review (W3C, 2004).
• The information available from the audit unit,
detailing the usage history and present load on a
specific service instance.
• The information available in the balancer
database which typically would describe an
addressing table for each service inside the
context.
This load balancing solution can be very easily
expanded to a pseudo-dynamic discovery solution.
Using an XML equivalence language, either
proprietary (at first) and then a standardized one, the
balancer database can not only hold information
about identical web service instances running in
different points on the network, but also information
about similar services that perform the same
functions but have other contracts. This situation
could be very frequent, the classic example of a
credit card validation service being eloquent. Using
a semantic language, such as OWL-S this
mechanism could be expanded into a fully fledged
dynamic discovery system, where services are
invoked based on their functionality rather then their
description (daml.org, 2004).
Once the message is relayed to the Web Service
that is intended to service it, the service will execute
the business logic required and will return the SOAP
response to the load balancer. The load balancer is
the only client the service will actually answer to.
While this might seem bad practice from a
performance stand-point, it is essential that the
response is returned by the service to the party that
requested it in the first place, for maintaining
compatibility with the basic Web Services
specifications.
The load balancer will forward the message to
the logging/audit unit that will again record
information such as response time and service
instance that performed the business logic if
necessary. This in turn will be used again in routing
further requests. The information will also be useful
for developers in deciding which service to use, if it
will be made public in UDDI registries.
The audit unit will pass the response directly to
the client, but the envelope will again intercept that
request and perform an encryption on it if dictated
by the security policies enforced by the context.
Finally, the response is forwarded to the client.
Evidently, the whole process described above is
transparent for the client, an essential requirement
for maintaining conformance with the Web Services
specification.
ICETE 2005 - GLOBAL COMMUNICATION INFORMATION SYSTEMS AND SERVICES
28