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:

  1. Write a Java class that extends the class com.aslan.sfdc.connect.credentials.AbstractJDBCUserPasswordCredentials
  2. Package the new Java class in a jar and place it in the “lib” subdirectory of the CopyStorm installation.
  3. 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.