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.

Last updated

Was this helpful?