# 密码重置监听器 密码重置是PMP中的一个重要功能。在PMP中重置了账户之后，可以自动执行一些动作。我们可以通过密码重置监听器来实现。 举例： 密码重置之后立即重启相关服务。 如果一个Windows服务指定的账户密码在PMP中更改了，你可以使用监听器机制来更改“存储的密码”（在服务的登录页签中指定的凭证）。 如果您在PMP中添加了网络设备的账户作为资源/账户，可以先在本地重置该账户的密码，然后调用自定义脚本连接到该设备，执行密码更改。 重置Windows计划任务或其它相关过程的密码。 ## 密码重置监听器是如何工作的？ 当PMP中的账户密码被修改时，调用脚本或指定的可执行文件。这个脚本或者可执行文件就是我们所说的密码重置监听器。您可以对所有类型的资源配置密码重置监听器，包括自定义的资源类型。因此，密码重置监听器机制是非常有用的，尤其对于默认不支持远程密码重置的资源类型。 密码重置监听器的调用效果就像直接在系统命令行执行效果一样的。 如果脚本需要其他程序从命令行执行，请提供“启动程序”(例如：cscript c:\scripts\changepassword.vbs 旧密码 新密码) PMP将在脚本调用的时候依次传递这些参数：资源名、DNS名称、账户名称、旧密码和新密码 在调用脚本时，您还可以指定的额外的参数。 运行脚本的权限与运行PMP服务器的用户权限相同。为了防止脚本滥用风险，将使用一个双重控制机制，在PMP调用脚本之前要保证有两个管理员知道并批准。一个管理员添加了密码重置监听器后，只有经另外一个管理员批准后才生效。当密码重置监听器被一个管理员编辑后也要执行相同的处理流程。这些操作可以由两个管理员来执行并添加到审计记录中。 密码重置监听器使用单独的线程，所以不会影响PMP的密码重置。密码重置监听器脚本将保存在数据库中，为你提供加密、备份等安全保障。 ## 如何设置密码重置监听器？ 前提条件 在设置之前，准备好你的脚本/可执行文件。 PMP只调用该脚本，不控制其执行过程，不处理其执行结果。所以，在创建脚本时做好一切准备。 ### 设置密码重置监听器 打开“管理” >> “定制” >> “密码重置监听器”。 在打开窗口中，点击添加监听器按钮。 如上所述，密码重置监听器的调用效果就像直接在系统命令行执行效果一样的。如果脚本需要其他程序从命令行执行，请提供“启动程序”(例如：cscript c:\scripts\changepassword.vbs 旧密码 新密码) 为创建的监听器起个名称。 浏览找到监听器脚本。 默认的，脚本参数为：资源名、DNS名称、账户名称、旧密码、新密码。如果你需要其他参数，在“附加参数”中输入。 指定关联的资源类型。 ### 监听器审批 如上所述，为了避免监听器脚本滥用，添加一个监听器必须涉及2个管理员。 只有PMP管理员可以添加监听器。添加的监听器必须通过另外一个管理员的审批。所以，刚创建的监听器是等待审批的状态。选择管理员，发送审批请求。该审批请求将通过邮件发送给管理员。 如果你是管理员，收到其他管理员发送的审批请求，你可以打开“管理” >> “定制” >>点击“密码重置监听器”，批准后监听器才生效。 点击“保存”。 监听器创建和审批都会记录到PMP的审计记录中。 ### 自定义监听器 #### (只有企业版提供该功能。) Password Manager Pro允许你通过“自定义监听器”提供自己的密码重置监听器实现。自定义监听器要求你提供自己的实现类，代替PMP提供的执行脚本类。让你的密码重置后执行的动作更加的灵活。 ## 如何创建自定义监听器？ 创建自定义监听器的总体步骤： 步骤1： 写你的实现类 实现PMPListenerInterface接口 步骤2： 在PMP界面中配置 在PMP界面中配置你的实现类。 步骤3： 把你的类打包为.jar文件，并加入到PMP中。 步骤4： 重启PMP 为了解释如何写你的实现类，下面给出一个例子。这个实现是用于执行PowerShell脚本的。 ### 步骤1： 写你的实现类 你的类要实现PMPListenerInterface.java。详细说明如下： public interface PMPListenerInterface { static final Logger LOG = Logger.getLogger(PMPListenerInterface.class.getName()); public String executeListener(Properties resourceProps, Properties accountProps, String listenerFilePath, String oldPassword) throws Exception; } 你的类需要的资源/账户属性可以从参数中获得。例如你需要“资源名称”，可以这样： resourceProps.get("RESOURCENAME") 所有属性列表如下： 资源属性(resourceProps) RESOURCENAME - Password Manager Pro中添加的资源名称 IPADDRESS - 资源的主机名或IP地址 RESOURCEURL - 为资源配置的URL DOMAINNAME - 如果资源类型是Windows域，其域名 SSHPORT - 如果设备提供SSH服务，其SSH端口 RESOURCEDESC - 资源描述 LOCATION - 资源位置 DEPARTMENT - 资源所属部门 所有自定义字段名(自定义字段标签名) 账户属性(accountProps) DESCRIPTION - 账户描述 LOGINNAME - 账户登录名称 PASSWORD - 账户的密码 DOMAINNAME - 如果是域用户，其域名 COMPLIANTSTATUS - 密码是否符合PMP密码策略要求 COMPLIANTREASON - 不符合PMP密码策略的原因 EXPIRYSTATUS - 密码过期状态 PASSWRDSYNCSTATUS - 密码的同步状态 所有自定义字段名(自定义字段标签名) 其他参数 listenerFilePath - 要执行的脚本文件路径。也可以在后面的步骤5中提供。 oldPassword - 提供旧密码，帮助实现类执行密码重置。 简单的PowerShell脚本执行实例 public class PowerShellListener implements PMPListenerInterface { public String executeListener(Properties resourceProps, Properties accountProps, String listenerFilePath, String oldPassword) throws Exception { String message = "Executed Successfully";// used for audit reason // 获取各种属性值 // 调用PowerShell脚本 } } ### 步骤2： 在PMP界面中的配置 打开管理 >> 密码重置监听器 >> 添加监听器，在打开的窗口中选择“自定义监听器”，输入如下信息： 类名 - 这里列出所有实现监听器接口的类。 新类名 - 如果你要添加自己的实现类，在这里输入其名称。 实现类 - 你的类的完整路径，包括包名。例如：com.adventnet.passtrix.listener.PowerShellListener 描述- 类的描述信息。 监听器名称 - 指定自定义监听器脚本名称及其扩展名。将在命令行执行时使用。 监听器脚本 - 浏览找到监听器脚本。如果你已经在你的类中定义了脚本路径，或者你确定使用API执行密码重置，可以跳过此步。这里提供的脚本将加密存储在数据库中。并且最终执行的是数据库中的脚本。 资源类型 - 选择关联自定义监听器脚本的资源类型。 发送批准请求到 - 为确保脚本不被滥用，该监听器要经过其他管理员批准。 点击“保存”。 监听器创建和审批都会记录到PMP的审计记录中。 ### 步骤3： 把你的类打包为.jar文件，并加入到PMP中 你要把类打包为.jar文件，放到<PMP_安装目录>/lib文件夹中。 ### 步骤4： 重启PMP 完成以上步骤后，你要重新启动PMP使你的配置生效。
版权所有 ©2016, 卓豪（北京）技术有限公司，保留一切权利。

顶部