One embodiment of the present invention provides a system that facilitates
accessing to a plurality of applications that require passwords. When the
system receives a request for a password from an application running on a
remote computer system, the system first authenticates the request to
ensure that it originated from a trusted source. Next, the system uses an
identifier for the application to look up the password for the
application in a password store, which contains passwords associated with
the plurality of applications. If the password exists in the password
store, the system sends the password or a function of the password to the
application on the remote computer system. Hence, the system creates the
illusion that there is a single sign on to a large number of
applications, whereas in reality the system automatically provides
different passwords to the applications as they are requested. In one
embodiment of the present invention, the request for the password
includes computer code that when run on the local computer system
requests the password on behalf of the application on the remote computer
system. In a variation on this embodiment, the computer code is in the
form of a JAVA.TM. applet that runs on a JAVA.TM. virtual machine on the
local computer system. In one embodiment of the present invention, the
JAVA.TM. applet is a signed JAVA.TM. applet, and authenticating the
request involves authenticating the JAVA.TM. applet's certificate chain.