Securing all the privileged resources and accounts in an IT environment is a crucial step in preventing unauthorized access and cyber threats. PAM360 supports remote password reset for a wide range of commonly used resource types in an IT environment, such as Windows, Windows Domain, Linux, macOS, etc.
However, in a complex IT environment, organizations often use various custom-built, legacy, or proprietary systems that may not employ standard authentication mechanisms, making it difficult to schedule password resets through conventional means. To address this gap, PAM360 provides Password Reset Plugins, which allow you to add your own implementation class and enforce automatic password resets for resource types that are not natively supported by PAM360, which may include the following:
Furthermore, administrators can leverage the access control workflow for legacy resources and enable automatic password reset upon usage. This help document covers the following topics in detail:
By default, users with the Privileged Administrator and Administrator roles can add, manage, and configure password reset plugins in PAM360. Additionally, PAM360 allows administrators to configure custom user roles with the Manage Password Reset Plugin privilege within Admin >> Customization >> Roles >> Custom Settings to add, manage, and approve password reset plugins.
Password Reset Plugin is primarily an implementation class that an administrator can add manually in PAM360. The plugin can be invoked from the PAM360 server to execute a password reset operation on a remote resource. Password reset plugins can be individually configured for resources belonging to custom resource types.
When the password reset is triggered for resources belonging to a custom resource type for which a password reset plugin has been associated, PAM360 will invoke the interface methods of that plugin. Once invoked, the plugin will first connect to the remote resource to reset the password. If the password reset is executed successfully using the plugin, PAM360 will subsequently update the new password in its repository. The plugin also supports password verification for remote resources, ensuring the password is in sync with the password locally saved in PAM360's repository.
Write a Java class by implementing the RemotePasswordReset interface:
public interface RemotePasswordReset
{
public boolean changeRemotePassword(Properties resetPropsprop) throws Exception;
public String getErrorMessage() throws Exception;
public boolean verifyRemotePassword(Properties verifyProps) throws Exception;
public boolean isDeviceAvailable(Properties verifyProps) throws Exception;
public Pattern getDbNamePattern()
}
// This class provides the methods to implement password reset plugin. You need to implement the interface
public interface RemotePasswordReset
{
/**
* Used to display the error message while doing the password reset and verification operations. The output gets reflected in audit trails.
* @return Error message, if password reset is successful, return null. Otherwise, return a proper error message.
*/
public boolean changeRemotePassword(Properties resetProps) throws Exception;
/** Actual function that will be called whenever "change remote password" functionality is triggered
*@param resetProps will contain all the details regarding the account for which password reset is triggered.
* @return Final output that will be sent to PAM360 server.
* {@value true} Success case - Allows the operation to proceed.
* {@value false} Failure case - Denies the operation to proceed.
**/
public String getErrorMessage() throws Exception;
/*** Used to display the error message while doing the remote password reset and verification operations. The output gets reflected in audit trails.
* Return a proper error message.
*/
public boolean verifyRemotePassword(Properties verifyProps) throws Exception;
/** This function will be called whenever "verify remote password" functionality is triggered.
*@param verifyProps will contain all the details regarding the account for which "verify remote password" was triggered.
*@return Final output that will be sent to PAM360 server.
*{@value true} Success case - Allows the operation to proceed.
*{@value false} Failure case - Denies the operation to proceed.
**/
public boolean isDeviceAvailable(Properties verifyProps) throws Exception; }
/** This function will be called before "verify remote password" function to check the accessibility of the device for which verify password was triggered.
*@param verifyProps will contain all the details regarding the account for which verify remote password was triggered.
*@return Final output that will be sent to PAM360 server.
*{@value true} Success case - Allows the operation to proceed.
*{@value false} Failure case - Denies the operation to proceed.
**/
public Pattern getDbNamePattern();
/** This method is used to validate the database name used for connection in SQL resources when launching a SQL session.
*@return the regular expression to validate the database name
(or)
*@return null if not a SQL resource and no validation needed **/Utilize the following jar files located within the <PAM360-Installation-Directory>\lib folder duirng compilation
For example:
You can design your implementation class so that the required resource and account parameters are passed as arguments and accessed directly within the class.
| Arguments | Description |
|---|---|
resetProps.get("RESOURCEID"); | Returns a Long object representing the resource ID. |
resetProps.get("ACCOUNTID"); | Returns a Long object representing the account ID. |
resetProps.get("OLDPASSWORD"); | Returns a String object containing the account’s old password. |
resetProps.get("NEWPASSWORD"); | Returns a String object containing the new password set for the account. |
resetProps.get("RESOURCENAME"); | Returns a String object containing the resource name. |
resetProps.get("DNSNAME"); | Returns a String object containing the DNS name of the resource. |
resetProps.get("ACCOUNTNAME"); | Returns a String object containing the account name. |
resetProps.get("OSTYPE"); | Returns a String object containing the OS type of the resource. |
resetProps.get("NOTES"); | Returns a String object containing the notes added under the account details. |
resetProps.get("LOGINNAME"); | Returns a String object containing the login name of the user who initiated the password reset. |
resetProps.get("IPADDRESS"); | Returns a String object containing the IP address of the resource. |
resetpresetPropsrops.get("RESOURCEDETAILS"); | Returns a ResourceDetails object that includes all other details of the resource. |
Follow these steps to add a password reset plugin in PAM360:

By default, users with the administrator type user role can add the password reset plugins in PAM360. Additionally, all the password reset plugins added by an administrator should be approved by another administrator to ensure that only authorized and necessary scripts or programs are being invoked in the reset plugin. Follow these steps to approve a password reset listener request:
After the request is approved by an administrator, you can use it as the password reset method to reset the passwords of custom resource type.
Follow these steps to configure the password reset plugin with the custom resource type to execute remote password reset.

The configured Password Reset plugin is automatically invoked whenever a password reset action is triggered, provided that a valid remote password reset configuration is in place. Refer to the sample implementation class provided in this link, created to reset user account passwords of Jira Service Desk. You can use this code within the Password Reset Plugin to enable automatic password resets for Jira Service Desk accounts.
Caution
After downloading the file, verify its integrity by confirming that the SHA256 checksum value matches the one provided below:d72f5f4c76418597426a5590ea800204ce4e510e290f51985202ec1c372ccd0b