Using an enterprise configuration for Java[TM] Web Start and Java[TM] Plug-in

Overview

There are several deployment properties that an enterprise may wish to mandate for all it's users, or it may wish to suggest defaults that the users can override.  Alternately, a system administrator may want to mandate settings or suggest defaults for all users on a particular machine.
This can be done by setting up a system or enterprise configuration.

Directories

<deployment.user.home>
A users deployment configuration is stored in a file named "deployment.properties" that is in a directory we refer to as <deployment.user.home>.  This directory is under the users home directory <user.home>.  On Windows platform this is:
<user.home>\Application Data\Sun\Java\Deployment (on XP, this is usually "C:\Documents and Settings\<user name>\Application Data\Sun\Java\Deployment")
On Unix platforms this is <user.home>/.java/deployment.

<deployment.system.home>
An enterprise configuration is set up by placing a file named "deployment.config" in a directory we refer to as <deployment.system.home>.  On Windows platforms this directory is "<Windows Directory>\Sun\Java\Deployment", on Unix platforms this is "/etc/.java/deployment".

jre lib directory
An alternate location for the deployment.config file is the lib directory of the jre.  A deployment.config file from the jre lib directory will only be used if there is no deployment.config file in the <deployment.system.home> directory.  It will only be used when running plugin, webstart, or the control panel from that jre (ie: after next java update it will no longer be used unless copied to the new lib directory.)

Setup

An enterprise configuration is set up by placing a "deployment.config" file in the deployment.system.home directory (or the jre lib directory).  The deployment.config file can contain 2 properties:
deployment.system.config, and deployment.system.config.mandatory
The deployment.system.config property value is the URL to the enterprise deployment.properties, so the file can then be placed anywhere on the net.
The deployment.system.config.mandatory property is a boolean value, and can be set to "true" to require the URL to be found. In this case the application or applet will not run if Java Web Start or Java Plug-in cannot reach specified URL at start up. Without mandatory set, an application or plugin applet will ignore the enterprise configuration if the specified URL cannot be reached.

The enterprise configuration's deployment.properties file can contain any properties used in the users deployment.properties file.  Additionally, for any property <deployment.xxx> (other than properties starting with "deployment.javaws.jre"), the enterprise configuration can add the property  "deployment.xxx.locked".  When "deployment.xxx.locked" is present, the value of the property "deployment.xxx" in the user level deployment.properties file is ignored, and the UI component in the Control Panel that controls that property will be disabled. (ie: the user cannot override the value of "deployment.xxx" in the enterprise config file.

Properties

As stated earlier, any deployment property recognized by Java Web Start or Java Plug-in can be set in the enterprise configuration file, but here are some that might be used for enterprise security setup:

deployment.system.cachedir
This property defines the location of the system cache.  A system cache can be used to share applications with all users in an enterprise, or just with multiple users on a system.  The system cache can be populated by using the "javaws -import -system <url>" command.

deployment.system.security.policy
This property points to a policy file that will be used for all Web Start applications and Plug-in applets.  The permissions granted by this policy file will be added to the sandbox permissions granted to untrusted applications and applets.

deployment.security.trusted.policy
This property points to a policy file that will be used instead of "all-permissions" for trusted applications and applets.  This defines the "ceiling" policy.

deployment.system.security.trusted.certs
This property points to a keystore of "pre-accepted" certificates.  By using this property you can allow users to run Java Web Start applications and Java Plug-in applets with all-permissions without ever seeing a security dialog.

deployment.security.askgrantdialog.show
This property determines if users are allowed to see security dialogs.  By setting this to false, users are not allowed to grant trust to applications using certificates that are not already trusted.  In conjunction with the above, an enterprise can specify exactly which applications are trusted.

deployment.security.askgrantdialog.notinca
This property determines if a user can grant trust to applications with self-signed certificates, or certificates otherwise not in the root ca store.

deployment.proxy.type, ... , deployment.proxy.auto.config.url 
These properties can be used to configure the proxy for the enterprise.