Vault Installation
The concepts of files and vaults are briefly described here.
Database Vaults
Database vaults do not have to be "installed". By creating a database vault using
any administration GUI (e.g. ice.NET Studio), everything is complete. The vault can
be used without further action.
File Vaults
In order to use File vaults, two configurations must be present:
- The database vault entry, to be created the same way as a Database vault, just the Vault Type should be set to FileVault
- Additional configuration, either stored in the database together with the vault entry or in the application .config file
To store the additional configuration in the database, use a configuration GUI of your choice,
e.g. the ice.NET Studio Administration User Interface. Click on the File Vault in the Administration/Vaults
tab, select the appropriate configuration type ("protocol") and insert the configuration values:
The specific configuration values will be described later, together with their configuration types.
Alternatively, the additional configuration can be inserted into the application .config XML file.
For each vault a configuration/ice.net/vaults/vault element is required:
<configuration>
[...]
<ice.net>
<database service="SQLServer" connectionString="server=(local)\SQLEXPRESS;trusted_connection=yes;database=test_ice;connect timeout=120" encrypted="false"/>
<license path="..\..\license.xml"/>
<vaults>
<vault name="Simple" basePath="..\..\__vault"/>
<vault name="IceVault" protocolFactory="PDTec.IceNet.Domain.VaultServer.IceNetVaultProtocolFactory,PDTec.IceNet.Domain">
<parameter name="BaseUrl" value="http://www.corp.com/icevault/icevault.ashx" />
<parameter name="BaseClientUrl" value="http://www.corp.com/icevault/icevault.ashx" />
<parameter name="AuthorizationMethod" value="RSA" />
<parameter name="PrivateKey" file="..\..\IceFileTransfer_AppServer.rsa" encrypted="false" />
<parameter name="MaxRequestSize" value="1024" />
</vault>
</vaults>
[...]
</ice.net>
</configuration>
Simple File Vault
Simple File Vaults require a filesystem storage area (fileshare) that is accessible
from the application server. The path to this fileshare must be provided in the vault
configuration.
The only configuration setting that has to be entered is the basePath:
The equivalent .config entry is similarly simple:
<vault name="Simple" basePath="\\server\share\__vault01" />
IceVault
IceVaults enable the separation between Application Server and Vault Server. Therefore
the application server does not directly access the vault fileshare but communicates with
the vault server. Both servers must be configured:
IceVault - Application Server Configuration
For the Application Server the following parameters are relevant:
Parameter |
Values |
Description |
ProtocolFactory |
PDTec.IceNet.Domain.VaultServer. IceNetVaultProtocolFactory, PDTec.IceNet.Domain |
The class name of the protocol implementation factory. This value is fixed for IceVaults.
|
BaseUrl |
HTTP/S URL |
The URL of the Vault Service that is accessible from the Application Server.
|
BaseClientUrl |
HTTP/S URL |
The URL of the Vault Service that is accessible from the Client site. This parameter
is optional and defaults to BaseUrl. In enviromnents with firewalls and intranet/internet
zones this is required to enable Smart Client access.
|
AuthorizationMethod |
RSA |
The cryptographic method used to sign and verify vault service commands.
The value should be RSA for maximum security.
|
PrivateKey |
File reference or binary content stored in DB. |
The private RSA key used to sign vault service commands. This key must be kept
secret. It is not necessary to distribute the private key to the vault servers.
The public RSA key generated from the private key is sufficient (and not secret).
|
MaxRequestSize |
[kB] |
HTTP servers have a maximum request size limit. With this parameter the maximum size
of a HTTP request that is sent to the vault server is specified. The default setting
of 1024 kB should be a good tradeoff between speed and reliability.
|
The settings can be applied in the ice.NET Studio (switch to IceVault protocol):
The private RSA key can be either uploaded or generated by the application server. Once the private key is in the
database, a derived public key file can be downloaded. This public key file must be accessible from the vault server
to verify URLs generated by the application server. If the private key is regenerated, all derived public keys
become invalid.
The equivalent .config entry looks like this (here the public RSA key must be stored in a file):
<vault name="IceVault" protocolFactory="PDTec.IceNet.Domain.VaultServer.IceNetVaultProtocolFactory,PDTec.IceNet.Domain">
<parameter name="BaseUrl" value="http://www.corp.com/icevault/icevault.ashx" />
<parameter name="BaseClientUrl" value="http://www.corp.com/icevault/icevault.ashx" />
<parameter name="AuthorizationMethod" value="RSA" />
<parameter name="PrivateKey" file="..\..\IceFileTransfer_AppServer.rsa" encrypted="false" />
<parameter name="MaxRequestSize" value="1024" />
</vault>
IceVault - Vault Server Configuration
For the Vault Server the following parameters are relevant:
Parameter |
Values |
Description |
name |
Vault Name |
The vault name identifies the vault. A vault service can handle multiple vaults.
|
basePath |
Fileshare path |
The root directory used by the vault service to store binary files. The vault service creates
directories and files under this root path. Therefore full access permissions must be granted
to this directory and all subdirectories to the vault service worker process user (e.g. BUILTIN\IIS_IUSRS).
|
authorizationMethod |
RSA |
The cryptographic method used to sign and verify vault service commands.
The value should be RSA for maximum security.
|
publicKeyFile |
File reference. |
The public RSA key used to verify vault service commands.
The public RSA key generated must be generated from the appropriate private key on the application server.
|
The settings must be stored in the web.config of the vault service under configuration/ice.net/components/vault.server/vaults/vault:
<configuration>
[...]
<ice.net>
[...]
<components>
<vault.server>
<vaults>
<vault name="IceVault" basePath="..\__vault" authorizationMethod="RSA" publicKeyFile="..\IceVault_VaultServer.rsapub" />
</vaults>
</vault.server>
</components>
</ice.net>
</configuration>