IBM Tivoli Directory Integrator Password Synchronizer Plug-in for Windows


Contents

IBM Tivoli Directory Integrator 6.0 Password Synchronizer Plug-in
Overview
Synchronizing from a single machine
Synchronizing from a Windows 2000, Windows XP or Windows 2003 domain
Sample scenario
Plug-in operation
The IBM Tivoli Directory Integrator 6.0 Password Synchronizer package
Prerequisites
Included files
Setting the Password Synchronization Account Types
Verifying registry settings
Enabling Local Security Policy (Windows 2000 only)
Password Stores setup information
Plugin administration tool

IBM Tivoli Directory Integrator 6.0 Password Synchronizer Plug-in

Overview

The IBM(R) Tivoli(R) Directory Integrator 6.0 Password Synchronizer plug-in intercepts Windows(R) 2000/Windows XP/Windows 2003 Server password change requests and propagates the changes to a repository (Password Store) after the Windows system changes the password.

The IBM Tivoli Directory Integrator 6.0 Password Synchronizer stores the password of the Windows user in a Password Store (LDAP server, WebSphere(R) MQ Everyplace(R)). The change is later propagated to other servers by an IBM Tivoli Directory Integrator 6.0 AssemblyLine.

This Password Synchronizer can be used on Windows 2000, Windows XP and Windows 2003 Server operating systems. It must be noted that this function creates a resident Java(TM) process with a footprint approximately 15 MB.

Synchronizing from a single machine

To synchronize passwords from a single machine, install the Password Synchronizer on the Windows stand-alone machine.

To install the IBM Tivoli Directory Integrator 6.0 Synchronizer Plug-in for Windows, run the idiplug-insWin32.exe binary from the plug-ins CD, and select IBM Tivoli Directory Integrator 6.0 Password Synchronizer Plug-in for Windows when asked to select plug-ins.

Synchronizing from a Windows 2000, Windows XP or Windows 2003 domain

To synchronize password changes from a Windows 2000 or Windows XP domain, install the Password Synchronizer on all domain controllers for the domain with which you want to synchronize.

Sample scenario

Bob logs onto the windows machine, presses Ctrl+Alt+Delete, and requests a password change. That password change is intercepted by the Password Synchronizer, then delegated to the associated Password Store (LDAP Password Store, MQe Password Store).

Password change requests to Active Directory through LDAP/JNDI are also intercepted and handled by the Password Synchronizer.

Plug-in operation

Windows allows password filter plug-ins to register for notifications of user password changes. These plug-ins are invoked before the password change is committed by Windows. The purpose of these password filters is to validate the password. If any one of the registered password filters rejects the password change, Windows also rejects the password change.

The Windows Password Synchronizer plug-in registers as such a Windows password filter. The plug-in verifies that the Password Store is available. If the Password Store is not available the plug-in rejects the password change. If the Password Store is up and running the plug-in allows Windows to complete committing the password change. If, however, another password filter rejects the password change Windows rejects the password change and the plug-in will not synchronize the password change.

Windows has a notification mechanism which allows applications to get notified when a user password change has been committed by Windows. The Windows Password Synchronizer plug-in registers for this notification. This notification is not generated if Windows rejects a password change. Thus the plug-in notification for a committed password change is not invoked unless all password filters have approved the password and Windows has successfully committed the password change.

The IBM Tivoli Directory Integrator 6.0 Password Synchronizer package

Prerequisites

The IBM Tivoli Directory Integrator 6.0 Password Synchronizer requires JRE 1.4.2 (included).

Included files

idipwsync.jar
Contains the Password Synchronizer function that interfaces with the LDAP Password Store.
timpwflt.jar
Contains the implementation for password interception.
timpwflt.dll
Contains the implementation which interfaces with Windows password change function.

Setting the Password Synchronization Account Types

The installation program creates most of the required Windows registry entries. There is, however, one parameter which you need to set manually - it is called "AccountTypes". The Password Synchronizer plug-in is capable of reporting password changes to the following Windows account types:

The "AccountTypes" parameter value is stored in the Windows registry at HKEY_LOCAL_MACHINE\SOFTWARE\IBM\Tivoli Identity Manager\Windows Password Synchronizer\AccountTypes - the value of this parameter is a character string, indicating which account types the Password Synchronizer will report password changes for. Its format is a space-delimited list of account types.

An example value for this parameter would be: "NORMAL_ACCOUNT WORKSTATION_TRUST_ACCOUNT"

Note:
The Password Synchronizer always reports password changes to accounts of type NORMAL_ACCOUNT regardless of whether NORMAL_ACCOUNT is specified in the AccountTypes parameter.

To make setting the "AccountTypes" parameter in the Windows registry more convenient, the installation program copies to the plugin installation folder a default Windows registry .reg file - setWinPwSyncAccTypes.reg. This default .reg file contains the default value for the "AccountTypes" parameter, which is "NORMAL_ACCOUNT"; this means that if you don't edit the setWinPwSyncAccTypes.reg file and use it to update the Windows registry, the Password Synchronizer will only report password updates to normal user accounts. By double-clicking this .reg file in Windows Explorer you can set the "AccountTypes" parameter at the correct location in the Windows registry. You can edit setWinPwSyncAccTypes.reg file in a text editor to change the default setting of the "AccountTypes" parameter. After editing this file you need to double-click it in order to apply the changes to the Windows registry. If the Password Synchronizer has already been configured and is up and running you need to reboot the Windows machine after applying your changes to the Windows registry so that the changes can take effect.

Verifying registry settings

The control settings are located in the following directory:

HKEY_LOCAL_MACHINE\SOFTWARE\IBM\Tivoli Identity Manager\Windows Password Synchronizer

To verify the settings using regedt32, select view-->find key. Enter Windows Password Synchronizer. Click find next. You see something like the following for the Windows Password Synchronizer key:

AccountTypes: NORMAL_ACCOUNT

Class: REG_SZ: com.ibm.di.plug-in.idipwsync.IDIPasswordSynchronizer

Classpath: "c:\<install_directory>"

Java:REG_SZ: "c:\<install_directory>\_jvm\bin\java.exe"


Note:
The phrase install_directory would match the location where you installed the Plug-in.

Do the following to verify the enablement setting using regedt32:

  1. Locate and select the pane labeled HKEY_LOCAL_MACHINE.
  2. Select SYSTEM node.
  3. Select CurrentControlSet.
  4. Select Control.
  5. Select LSA.
  6. The Notification Packages key on the right pane contains the value timpwflt.

Enabling Local Security Policy (Windows 2000 only)

If you are using Windows 2000 do the following:

  1. Select Control Panel-->Administrative Tools-->Local Security Policy
  2. Select Account Policies-->Password Policy
  3. Change Passwords must meet complexity requirements to enabled.
Note:
For this change to take place, reboot the machine. Make sure that you set up the Password Store properties file before rebooting the machine.

Password Stores setup information

During installation you will be prompted to choose a Password Store. The installer will configure the Password Synchronizer to use the chosen Password Store, but will not configure the Password Store itself.

See the following for setting up the Password Stores:


Plugin administration tool

A command line tool for performing administrative tasks can be found in the plugin installation directory: "pwsync_admin.exe"
The primary purpose of this administrative tool is to allow reconfiguration of the Windows Password Synchronizer without rebooting the Windows machine. For example, using this administrative tool it is possible to change the password store without rebooting Windows.
Note: The only change that cannot be accomplished without rebooting Windows is replacing the "timpwflt.dll" plugin DLL located in the Windows "System32" directory.


Usage

This is how the administration tool is used from the command line:

pwsync_admin.exe command

This tool takes a single command line parameter (the command argument above), whose value can be one of the following:

  • suspend_plugin - this command writes a boolean value to the Windows registry (please see the Windows registry settings section), thus indicating to the plugin that subsequent password changes must not be propagated to the Java proxy; this command causes subsequent password changes to be skipped until a resume_plugin command is issued.
  • resume_plugin - this command writes a boolean value to the Windows registry (please see the Windows registry settings section), thus indicating to the plugin that subsequent password changes must be propagated to the Java proxy; this command causes subsequent password changes to be synchronized until a suspend_plugin command is issued.
  • stop_proxy - this command causes the administration tool to connect through a socket to the command socket port of the Java proxy and send a stop request to the proxy; this causes the proxy to terminate gracefully.
  • start_proxy - this command starts the Java proxy; this causes the proxy configuration to be reloaded.
  • restart_proxy - this command is equivalent to a stop_proxy command followed by a start_proxy command.

  • Windows registry settings

    The Java proxy listens on a server socket for administrative commands to be sent by the administration tool. The port of the command socket can be specified in the Windows registry in the following key:
    [HKEY_LOCAL_MACHINE\SOFTWARE\IBM\Tivoli Identity Manager\Windows Password Synchronizer]
    "ProxyCommandPort"="19002"

    If this key is missing a default value of 19001 will be used.
    Changing the Java proxy command port is not recommended unless the default port of 19001 is occupied by another application.
    The value of this key is used by both the Java proxy and the administration tool - it lets the administration tool connect to the Java proxy by using the same port.
    This key can only be created manually, but creating this key is only required when the Java proxy command port needs to be changed.
    Note: Changing this key should be done only when the Java proxy is stopped. Otherwise on the next invocation of the administration tool it will not be able to connect to the Java proxy.

    The registry key used by the suspend_plugin and resume_plugin commands:
    [HKEY_LOCAL_MACHINE\SOFTWARE\IBM\Tivoli Identity Manager\Windows Password Synchronizer]
    "disabled"="true"

    If this key is missing or has any value different than “true” the plugin will synchronize passwords. If the key has a value of "true", then the plugin will not synchronize passwords.
    This key is created by the plugin administration tool on first use.

    Note: Neither of these two keys is present in the Windows registry after the plugin is installed. These keys are not required for the normal operation of the plugin.


    Logging

    The administrative tool logs messages both to the console and to a log file named pwsync_admin.log located in the install directory of the plugin. The log file can be used for analyzing errors encountered during administrative tool operations and can serve as a history reference on what operations have been performed using this tool.


    Considerations on using the administration tool

    1) When the plugin is suspended password changes are skipped (i.e. not propagated) by the plugin and that could result in inconsistencies (i.e. password changes lost) in the target synchronization system.

    2) When the Java proxy is started, it loads the password store configuration file. This happens when the machine is rebooted, or when the plugin is not suspended, the Java proxy is stopped, and a password change occurs. If the user is editing the configuration file at the time, the Java proxy may load a possibly corrupted configuration.

    3) When the plugin is not suspended and the Java proxy is not running, if a password change is issued with the "Active Directory Users and Computers" user interface tool the plugin is notified by Windows two or three times of this password change. The result is that the same password update is propagated two or three times. This happens because the plugin starts the proxy on the next password change, which takes some time and this causes Windows to notify the plugin several times of the same password change. This multiple reporting, however, is only present the first time the Java proxy is not running, because on subsequent password changes the Java proxy is already running.

    4) When the plugin is configured with the LDAP Password Store and the LDAP Store itself is set for asynchronous storing (waitForStore=false specified in the LDAP Store configuration file) and when the plugin is not suspended it is possible that a stop_proxy command would cause some password changes to be skipped.

    Recommendations: To avoid these problems, please follow these guidelines:


    Example for changing the configuration without rebooting the Windows machine

    The following steps show how the log file of the MQe password store can be changed without rebooting the Windows machine:

      1. Copy the "mqepwstore.props" configuration file of the MQe password store to a temporary location.
      2. Edit the file in this temporary location. Change the value of the "logFile" property.
      3. Copy the edited file back to the original location.
      4. Run the "pwsync_admin.exe suspend_plugin" command.
      5. Run the "pwsync_admin.exe stop_proxy" command.
      6. Run the "pwsync_admin.exe start_proxy" command.
      7. Run the "pwsync_admin.exe resume_plugin" command.

    After these steps are completed the MQe password store will start logging to the new log file. During the short window when the plugin is suspended, password changes could be skipped. They will occur in the Windows domain controller, but they will not be propagated by the plugin. So, this procedure should occur at a low usage time, when password changes are unlikely.