How to Add a New Database Password Manager
CopyStorm supports reading Database credentials from a user-supplied Database password manager.
This feature was introduced to eliminate the need to:
- Change the saved password in many CopyStorm configuration files.
- Provide the password to CopyStorm on the command line due to security rules.
In addition to security benefits, this feature allows you to use your own company-wide password manager.
Feature Overview
The process to add a new Database password manager to CopyStorm is to:
- Write a Java class that extends the class com.aslan.sfdc.connect.credentials.AbstractJDBCUserPasswordCredentials
- Package the new Java class in a jar and place it in the “lib” subdirectory of the CopyStorm installation.
- Add a new CredentialsRegistry.xml file to CopyStorm’s config directory to register thenew credential manager with CopyStorm.
Writing the Java Class
The Java class needs to extend com.aslan.sfdc.connect.credentials.AbstractJDBCUserPasswordCredentials, and will need to override/implement the following methods:
| Method Signature | Required | Description |
|---|---|---|
| String getUsername() | Yes | Returns the username used when authenticating with the Database. |
| String getPassword() | Yes | Returns the password used when authenticating with the Database. |
| boolean setRequired(boolean required) | Yes | Update the credentials editor to indicate that the connection type does not require credential information (e.g. when using SQL/Server’s integrated security). |
| int injectIntoUI(JPanel panel, int startRow) | No | Adds any UI elements needed by the password manager to the CopyStorm UI. |
| boolean isAvailable() | No | Returns true if the password manager should appear as an option in the UI. |
| void saveState(Element e, boolean savePasswords) | Yes | Adds XML attributes to the provided Element to save any information needed to restore system state. This information is saved to CopyStorm’s configuration file. |
| void restoreState(Element e) | Yes | Restore XML state saved via saveState() |
| String getFingerprint() | Yes | Returns a value used to determine whether or not credentials have changed. This is used to determine whether or not a cached session may be used when connecting with the Database. |
| boolean isComplete() | Yes | Returns true when information provided by the user is enough to attempt a connection to the Database. |
| void clear() | Yes | Clears out any internal state kept by the password manager. |
In addition to the required methods above, there are several convenience methods which may be used by credential managers:
| Method Signature | Description |
|---|---|
| void fireCredentialsComplete(boolean complete) | Enables or disables the “Test Database Connection” button. |
| void addRowToUI(String label, String toltip, JComponent editor, JPanel panel, int row | Adds a new editor to the UI.
This method can be used in the injectIntoUI() method to maintain consistent styling with the rest of the CopyStorm UI. |
| String encrypt(String text) | Encrypts text.
This method can be used in the saveState() function to avoid implementing a custom encryption scheme to support encrypting saved passwords. |
| String decrypt(String encryptedText) | Decrypts text encrypted with encrypt().
This method can be used in the restoreState() function to avoid implementing a custom encryption scheme. |
| void saveXMLAttribute(Element e, String key, String value) | Adds a new attribute to an XML element.
This method can be used in the saveState() function to avoid interacting with the Element directly. |
| String loadXMLAttribute(Element e, String key) | Retrieves an attribute to an XML element
This method can be used in the restoreState() function to avoid interacting with the Element directly. |
Example Credential Manager: Keepass
Click Here to view the Java source of Capstorm’s built-in Keepass Database password manager.