Sun Java System Identity Manager 7.0 管理指南 |
第 9 章
PasswordSync本章介绍 Sun Java System Identity Manager PasswordSync 的功能,该功能使 Windows 客户机能够更改 Windows Active Directory 和 Windows NT 域中的密码,从而使更改与 Identity Manager 同步。
信息通过以下方式进行组织:
什么是 PasswordSync?PasswordSync 功能可以使在 Windows Active Directory 和 Windows NT 域上的用户密码更改与 Identity Manager 中定义的其他资源保持同步。PasswordSync 必须安装在将与 Identity Manager 同步的域中的每个域控制器上。PasswordSync 必须与 Identity Manager 分开安装。
在域控制器上安装 PasswordSync 之后,该控制器将与作为 Java 通讯服务 (Java Messaging Service, JMS) 客户机代理的 Servlet 进行通信。该 Servlet 接着与启用 JMS 的信息队列通信。JMS 侦听器资源适配器从队列中删除消息并使用工作流任务处理密码更改。密码将在用户所有的分配资源中得到更新,并且 SMTP 服务器发送电子邮件通知用户密码更改的状态。
注
密码更改必须将要转发的更改请求的本机密码策略传递至 Identity Manager 服务器以实现同步。如果提议的密码更改不遵循本机密码策略,ADSI 将显示错误信息对话框,并且不向 Identity Manager 发送任何同步数据。
安装之前只能在 Windows 2000、Windows 2003 和 Windows NT 域控制器上设置 PasswordSync 功能。必须在与 Identity Manager 同步的域中的每个域控制器上安装 PasswordSync。
PasswordSync 需要具有与 JMS 服务器的连通性。有关 JMS 系统要求的详细信息,请参见 Sun Java System Identity Manager 资源参考资料中的 JMS 侦听器资源适配器部分。
此外,PasswordSync 还要求您
以下各节将详细讨论这些要求。
安装 Microsoft .NET 1.1
要使用 PasswordSync,必须安装 Microsoft .NET 1.1 或更高版本的 Framework。如果您使用 Windows 2003 域控制器,则默认安装此 Framework。如果您使用 Windows 2000 或 Windows NT 域控制器,则可以从 Microsoft 下载中心下载此工具包:
http://www.microsoft.com/downloads
卸载 PasswordSync 的先前版本
安装更高版本之前,必须先删除先前安装的任何 PasswordSync 实例。
安装 PasswordSync以下过程介绍了如何安装 PasswordSync 配置应用程序。
- 从 Identity Manager 安装介质中,单击 pwsync\IdmPwSync.msi 图标。将显示 "Welcome" 窗口。
安装向导提供了以下导航按钮:
- 阅读 "Welcome" 屏幕上提供的信息,然后单击 "Next" 显示“Choose Setup Type PasswordSync Configuration”窗口。
PasswordSync 安装- 单击 "Typical" 或 "Complete" 安装完整的 PasswordSync 软件包,或者单击 "Custom" 控制安装哪些软件包组件。
- 单击 "Install" 安装该产品。
将显示一则消息,以通知您是否已成功安装 PasswordSync。
- 单击 "Finish" 完成安装过程。
请确保选择了 "Launch Configuration Application",以便可以开始配置 PasswordSync。有关该过程的详细信息,请参见配置 PasswordSync。
表 9-1 介绍了在每个域控制器上安装的文件。
配置 PasswordSync如果从安装程序运行配置应用程序,则该应用程序会将配置屏幕显示为向导。完成向导后,以后每次运行 PasswordSync 配置应用程序时,都可以通过选择选项卡在屏幕间导航。
使用以下步骤配置 PasswordSync。
- 如果还没有运行 PasswordSync 配置应用程序,请开始运行。
默认情况下,此配置应用程序安装在 "Program Files" >
Sun Java System Identity Manager PasswordSync > "Configuration" 中。将显示 "PasswordSync Configuration" 对话框(请参见图 9-1)。
图 9-1 PasswordSync 配置对话框
根据需要编辑字段。
- 单击 "Next" 显示 "Proxy Server Configuration" 页(图 9-2)。
图 9-2 代理服务器对话框
根据需要编辑字段。
- 单击 "Next" 显示 JMS 设置对话框(图 9-3)。
图 9-3 JMS 设置对话框
根据需要编辑字段。
- 单击 "Next" 显示 JMS 属性对话框(图 9-4)。
图 9-4 JMS 属性对话框
JMS 属性对话框允许您定义用于构建初始 JNDI 上下文的属性集。必须定义以下名称/值对:
- 单击 "Next" 显示电子邮件对话框(图 9-5)。
图 9-5 电子邮件对话框
通过电子邮件对话框,您可以配置是否在用户的密码更改没有成功同步(由于通信错误或 Identity Manager 之外的其他错误)时发送电子邮件通知。
根据需要编辑字段。
- 单击 "Finish" 保存更改。
如果再次运行配置应用程序,将显示一组选项卡而不是向导。如果要将应用程序显示为向导,请从命令行输入以下命令:
C:\InstallDir\Configure.exe -wizard
调试 PasswordSync本节提供了有关如何查找进行 PasswordSync 故障诊断时需要的信息以及如何使用配置工具启用跟踪的详细信息。本节还列出了调试 PasswordSync 或启用配置工具无法实现的功能时可能需要的注册表主键。
错误日志
PasswordSync 将所有故障写入 Windows 事件查看器。错误日志条目的源名称是 PasswordSync。
跟踪日志
首次运行配置工具时,向导并不包括用于配置跟踪的面板。但是,每次启动该工具后都会显示 "Trace" 选项卡(图 9-6)。
图 9-6 "Trace" 选项卡
"Trace Level" 字段指定写入跟踪日志时 PasswordSync 将提供的详细级别。值 0 表示已关闭跟踪;值 4 为提供最多详情。
当跟踪文件超过 "Max File Size (MB)" 字段中指定的大小时,PasswordSync 会将文件移到附加了 .bk 的基本名。例如,如果将跟踪文件设置为 C:\logs\pwicsvc.log,并且将跟踪级别设置为 100 MB,则当跟踪文件超过 100 MB 时,PasswordSync 将该文件重命名为 C:\logs\pwicsvc.log.bk 并将新数据写入新的
C:\logs\pwicsvc.log 文件。注册表主键
您可使用 Windows 注册表编辑器编辑表 9-2 中列出的注册表主键。这些主键位于:
HKEY_LOCAL_MACHINE\SOFTWARE\Waveset\Lighthouse\PasswordSync
此位置也存在其他主键,但可以使用配置工具来编辑它们。
卸载 PasswordSync要卸载 PasswordSync 应用程序,请转至 Windows 的“控制面板”并选择添加或删除程序。然后选择 Sun Java System Identity Manager PasswordSync 并单击删除。
必须重新启动系统才能完成该过程。
部署 PasswordSync要部署 PasswordSync,必须在 Identity Manager 中执行以下操作:
配置 JMS 侦听器适配器
一旦域控制器间接将消息置于队列中,就必须将资源适配器配置为接受这些消息。必须创建 JMS 侦听器资源适配器并将其配置为与队列通信。有关设置该适配器的详细信息,请参见 Sun Java System Identity Manager 资源参考资料。
必须配置以下资源参数:
实现同步用户密码工作流
默认的同步用户密码工作流接受来自 JMS 侦听器适配器的每个请求并签出,然后再签回 ChangeUserPassword 查看器。完成签入后,工作流迭代所有资源帐户并选择除源资源以外的所有资源。Identity Manager 使用电子邮件通知用户所有资源上的密码更改是否成功。
如果要默认实现同步用户密码工作流,则将其作为 JMS 侦听器适配器实例的进程规则进行分配。可以在适配器的活动同步向导中分配进程规则。
如果要修改默认的同步用户密码工作流,请复制 $WSHOME/sample/wfpwsync.xml 文件并进行修改。然后将修改后的工作流导入 Identity Manager。
可能要对默认工作流执行的修改包括:
有关使用工作流的详细信息,请参见 Sun Java System Identity Manager 工作流、表单和视图。
设置通知
Identity Manager 提供密码同步通知和密码同步故障通知的电子邮件模板。这些模板可通知用户在多个资源间更改密码的尝试是否成功。
两个模板均应该更新,以便在用户需要进一步帮助时,为其提供有关下一步操作的公司特定信息。请参见自定义电子邮件模板。
使用 Sun JMS Server 配置 PasswordSyncIdentity Manager 提供了 JMS 侦听器适配器,该适配器使密码更改事件可以在 JMS 消息服务器上进行排队,以增强可靠性并确保传送。
本节通过使用示例方案来提供有关使用 Sun JMS 服务器配置 PasswordSync 的说明。信息通过以下方式进行组织:
概述
本节介绍了示例方案、Windows PasswordSync 解决方案以及 JMS 解决方案。
示例方案
使用 JMS 服务器配置 PasswordSync 的典型(简单)使用案例是使用户在 Windows 上更改其密码,然后令 Identity Manager 获取新密码,最后在 Sun Directory Server 上使用新密码更新用户帐户。
需要为该方案配置以下环境:
- Windows Server 2003 Enterprise Edition - Active Directory
- Sun Java System Identity Manager 6.0 2005Q4M3
- 在 Suse Linux 10.0 上运行的 MySQL 4.1.13
- 在 Suse Linux 10.0 上运行的 Tomcat 5.0.28
- 在 Suse Linux 10.0 上运行的 Sun Java System Message Queue 3.6 SP3 2005Q4
- 在 Suse Linux 10.0 上运行的 Sun Java System Directory Server 5.2 SP4
- Java 1.4.2
以下文件已复制到 Tomcat common/lib 目录以启用 JMS 和 JNDI:
解决方案概述
分析在 Windows PasswordSync 解决方案中起作用的所有组件时,会发生以下情况:
- 用户在工作站上更改其密码后,PasswordSync 将向当前 Active Directory 域控制器发送密码修改,并且 Identity Manager 密码捕获 dll(位于域控制器上)将捕获明文密码。
- 密码捕获 dll 将向 Identity Manager SOAP 请求处理程序发出 SOAP 请求。
用户 ID、加密的密码以及必需的 JMS 配置信息全部封装在此 SOAP 请求中。例如,
- SOAP 处理程序接收请求并使用请求中所包含的 JMS 参数来启动到 JMS Message Queue 代理的连接。然后,SOAP 处理程序将发送包含用户 ID 和加密密码(以及某些稍后将讨论的其他参数)的消息。
例如,Message Queue 代理上的 SOAP 处理程序将发送类似于以下消息的消息(类型为 MapMessage):
代码示例 9-2 SOAP 处理程序消息
password:zkpS8qcIJkVBWa/Frp+JqA==
accounts:null
resourceAccountGUID:8f245d1490de7a4192a8821c569c9ac4
requestTimestamp: 1143639284325
queueName:cn=pwsyncDestination
jmsUser:guest
resourcetype:Windows Active Directory
resourcename:null
JNDIProperties:
java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory;
java.naming.provider.url=ldap://gwenig.coopsrc.com:389/
ou=sunmq,dc=coopsrc,dc=com
connectionFactory:cn=pwsyncFactory
clientEndpoint:W2003EE
userEmailAddress:null
sessionType:LOCAL
jmsPassword:guest
resourceAccountId:CN=John Smith,OU=people,DC=org,DC=local
- Message Queue 代理将消息排入队列中,并且 JMS 侦听器适配器将检索消息。现在,Identity Manager 可以启动工作流。
图 9-7 说明了该示例方案中使用的配置:
图 9-7 方案配置
JMS 概述
Java 消息服务 (Java Message Service, JMS) API 是一种消息传送标准,该标准允许应用程序组件(基于 Java 2 Platform, Enterprise Edition [J2EE])创建、发送、接收以及读取消息。通过该 API 可实现松散耦合的可靠异步分布式通信。
要发送或接收消息,JMS 客户机必须先连接到 JMS 提供程序,此提供程序通常作为消息代理来实现。该连接将在客户机和代理之间打开一个通信通道。接下来,客户机必须设置一个用于创建、生成和使用消息的会话。
JMS 并未完全定义以下消息传送元素:
这两个对象不是通过编程方式创建的,通常是使用管理工具创建和配置的。之后,它们将存储在对象存储库中,JMS 客户机可以通过标准的 JNDI 查找来访问它们。
图 9-8 说明了该示例方案中的通信流:
图 9-8 通信流方案
SOAP 处理程序收到来自于 Windows 密码捕获 dll 的请求后,SOAP 处理程序将用作代理,以将 SOAP 请求转换为 JMS 消息。之后,JMS 侦听器适配器将接收消息并触发相关工作流。
要使用 JMS 代理,Identity Manager SOAP 处理程序和 Identity Manager JMS 侦听器适配器必须都具有连接工厂和目标(可使用 JNDI 查找)。
Identity Manager SOAP 处理程序将在 SOAP 消息中获取所需的详细信息(如先前所示):
代码示例 9-3 SOAP 消息
<jmsUser>guest</jmsUser>
<jmsPassword>guest</jmsPassword>
<queueName>cn=pwsyncDestination</queueName>
<connectionFactory>cn=pwsyncFactory</connectionFactory>
<sessionType>LOCAL</sessionType>
<JNDIProperties>java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory;java.naming.
provider.url=ldap://gwenig.coopsrc.com:389/ou=sunmq,dc=coopsrc,dc=com</JNDIProperties>
在 Windows 上安装和配置 PasswordSync 时将提供以下所有参数(图 9-9 和图 9-10 中所示):
图 9-9 "JMS Settings" 选项卡
图 9-10 "JMS Properties" 选项卡
以下各节介绍了这些参数:
JMS 设置参数
"JMS Settings" 选项卡包含以下参数:
在代码示例 9-4 中,连接工厂和队列名称为 LDAP RDN,这实现了一个完整的 DN(在与 java.naming.provider.url 结合时)。一个简单的 ldapsearch 即可显示管理对象条目:
代码示例 9-4 连接工厂和队列名称示例
Connection Factory:
#> ldapsearch -h gwenig.coopsrc.com -b 'dc=coopsrc,dc=com' 'cn=pwsyncfactory'
dn:cn=pwsyncFactory,ou=sunmq,dc=coopsrc,dc=com
objectClass:top
objectClass:javaContainer
objectClass:javaObject
objectClass:javaNamingReference
javaClassName:com.sun.messaging.QueueConnectionFactory
javaFactory:com.sun.messaging.naming.AdministeredObjectFactory
javaReferenceAddress:#0#version#3.0
javaReferenceAddress:#1#readOnly#false
javaReferenceAddress:#2#imqOverrideJMSPriority#false
javaReferenceAddress:#3#imqConsumerFlowLimit#1000
javaReferenceAddress:#4#imqAddressListIterations#1
javaReferenceAddress:#5#imqOverrideJMSExpiration#false
javaReferenceAddress:#6#imqConnectionType#TCP
javaReferenceAddress:#7#imqLoadMaxToServerSession#true
javaReferenceAddress:#8#imqPingInterval#30
javaReferenceAddress:#9#imqSetJMSXUserID#false
javaReferenceAddress:#10#imqConfiguredClientID#
javaReferenceAddress:#11#imqSSLProviderClassname#com.sun.net.ssl.internal.ssl.Provider
javaReferenceAddress:#12#imqJMSDeliveryMode#PERSISTENT
javaReferenceAddress:#13#imqConnectionFlowLimit#1000
javaReferenceAddress:#14#imqConnectionURL#http://localhost/imq/tunnel
javaReferenceAddress:#15#imqBrokerServiceName#
javaReferenceAddress:#16#imqJMSPriority#4
javaReferenceAddress:#17#imqBrokerHostName#localhost
javaReferenceAddress:#18#imqJMSExpiration#0
javaReferenceAddress:#19#imqAckOnProduce#
javaReferenceAddress:#20#imqEnableSharedClientID#false
javaReferenceAddress:#21#imqAckTimeout#0
javaReferenceAddress:#22#imqAckOnAcknowledge#
javaReferenceAddress:#23#imqConsumerFlowThreshold#50
javaReferenceAddress:#24#imqDefaultPassword#guest
javaReferenceAddress:#25#imqQueueBrowserMaxMessagesPerRetrieve#1000
javaReferenceAddress:#26#imqDefaultUsername#guest
javaReferenceAddress:#27#imqReconnectEnabled#false
javaReferenceAddress:#28#imqConnectionFlowCount#100
javaReferenceAddress:#29#imqAddressListBehavior#PRIORITY
javaReferenceAddress:#30#imqReconnectAttempts#0
javaReferenceAddress:#31#imqSetJMSXAppID#false javaReferenceAddress:
#32#imqConnectionHandler#com.sun.messaging.jmq.jmsclient.protocol.
tcp.TCPStreamHandler
javaReferenceAddress:#33#imqSetJMSXRcvTimestamp#false
javaReferenceAddress:#34#imqBrokerServicePort#0
javaReferenceAddress:#35#imqDisableSetClientID#false
javaReferenceAddress:#36#imqSetJMSXConsumerTXID#false
javaReferenceAddress:#37#imqOverrideJMSDeliveryMode#false
javaReferenceAddress:#38#imqBrokerHostPort#7676
javaReferenceAddress:#39#imqQueueBrowserRetrieveTimeout#60000
javaReferenceAddress:#40#imqSSLIsHostTrusted#true
javaReferenceAddress:#41#imqSetJMSXProducerTXID#false
javaReferenceAddress:#42#imqConnectionFlowLimitEnabled#false
javaReferenceAddress:#43#imqReconnectInterval#3000
javaReferenceAddress:#44#imqAddressList#mq://gwenig:7676/jms
javaReferenceAddress:#45#imqOverrideJMSHeadersToTemporaryDestinations#false
cn:pwsyncFactory
目标如下:
代码示例 9-5 目标示例
#> ldapsearch -h gwenig.coopsrc.com -b 'dc=coopsrc,dc=com' 'cn=pwsyncdestination'
dn:cn=pwsyncDestination,ou=sunmq,dc=coopsrc,dc=com
objectClass:top
objectClass:javaContainer
objectClass:javaObject
objectClass:javaNamingReference
javaClassName:com.sun.messaging.Queue
javaFactory:com.sun.messaging.naming.AdministeredObjectFactory
javaReferenceAddress:#0#version#3.0
javaReferenceAddress:#1#readOnly#false
javaReferenceAddress:#2#imqDestinationName#pwsyncQueue
javaReferenceAddress:#3#imqDestinationDescription#A Description for the Destination Object
cn:pwsyncDestination
JMS 属性参数
在示例方案中,连接工厂和目标对象位于 LDAP 目录中。java.naming.factory.initial 是用于创建初始 JNDI 上下文的工厂类的值。java.naming.provider.url 包含环境属性的名称,该属性用于为正在使用的服务提供商指定配置信息。如果不提供详细信息,PasswordSync 将使用匿名 LDAP 会话来检索连接工厂和目标对象。
要提供证书和绑定方法,请指定以下属性:
图 9-12 详细说明了该过程:
图 9-12 检索连接工厂和目标对象
SOAP 处理程序和 JMS 侦听器适配器必须都搜索连接工厂和目标才能发送/接收消息。
创建和存储管理对象
本节介绍了用于创建和存储以下管理对象的指令,这些指令是示例方案正常工作所必需的:
将管理对象存储到 LDAP 目录
本节介绍了将连接工厂对象存储到 LDAP 目录时所需的命令。
存储连接工厂对象
使用代码示例 9-6 中的命令来存储连接工厂对象:
代码示例 9-6 存储连接工厂对象
#> ./imqobjmgr add -l "cn=mytestFactory"
-j "java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory"
-j "java.naming.provider.url=ldap://gwenig.coopsrc.com:389/ou=sunmq,dc=coopsrc,dc=com"
-j "java.naming.security.principal=cn=directory manager"
-j "java.naming.security.credentials=password"
-j "java.naming.security.authentication=simple"
-t qf
-o "imqAddressList=mq://gwenig.coopsrc.com:7676/jms"
Adding a Queue Connection Factory object with the following attributes:
imqAckOnAcknowledge [Message Service Acknowledgement of Client Acknowledgements]
...
imqSetJMSXUserID [Enable JMSXUserID Message Property] false
Using the following lookup name:
cn=mytestFactory
The object's read-only state:false
To the object store specified by:
java.naming.factory.initial com.sun.jndi.ldap.LdapCtxFactory
java.naming.provider.url ldap://gwenig.coopsrc.com:389/ou=sunmq,dc=coopsrc,dc=com
java.naming.security.authentication simple
java.naming.security.credentials netscape
java.naming.security.principal cn=directory manager
Object successfully added.
其中 imqAddressList 定义了 JMS 服务器/代理主机名 (gwenig.coopsrc.com)、端口 (7676) 以及访问方法 (jms)。
存储目标对象
使用代码示例 9-7 中的命令来存储目标对象:
代码示例 9-7 存储目标对象
#> ./imqobjmgr add -l "cn=mytestDestination"
-j "java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory"
-j "java.naming.provider.url=ldap://gwenig.coopsrc.com:389/ou=sunmq,dc=coopsrc,dc=com"
-j "java.naming.security.principal=cn=directory manager"
-j "java.naming.security.credentials=password"
-j "java.naming.security.authentication=simple"
-t q
-o "imqDestinationName=mytestDestination"
Adding a Queue object with the following attributes:
imqDestinationDescription [Destination Description] A Description for the Destination Object imqDestinationName [Destination Name] mytestDestination
Using the following lookup name:
cn=mytestDestination
The object's read-only state:false
To the object store specified by:
java.naming.factory.initial com.sun.jndi.ldap.LdapCtxFactory
java.naming.provider.url ldap://gwenig.coopsrc.com:389/
ou=sunmq,dc=coopsrc,dc=com
java.naming.security.authentication simple
java.naming.security.credentials netscape
java.naming.security.principal cn=directory managerObject successfully added.
将管理对象存储到文件
本节介绍了如何使用命令行工具将管理对象存储到文件。
存储连接工厂对象
代码示例 9-8 介绍了存储连接工厂对象以及指定查找名称时所需的命令:
代码示例 9-8 存储连接工厂对象并指定查找名称
#> ./imqobjmgr add -l "mytestFactory" -j "java.naming.factory.initial=
com.sun.jndi.fscontext.RefFSContextFactory"-j "java.naming.provider.url=file:///home/gael/tmp" -t qf -o "imqAddressList=mq://gwenig.coopsrc.com:7676/jms"
Adding a Queue Connection Factory object with the following attributes:
imqAckOnAcknowledge [Message Service Acknowledgement of Client Acknowledgements]
...
imqSetJMSXUserID [Enable JMSXUserID Message Property] false
Using the following lookup name:
mytestFactory
The object's read-only state:false
To the object store specified by:java.naming.factory.initial com.sun.jndi.fscontext.RefFSContextFactory
java.naming.provider.url file:///home/gael/tmpObject successfully added.
To specify a destination:
#> ./imqobjmgr add -l "mytestQueue" -j "java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory"
-j "java.naming.provider.url=file:///home/gael/tmp" -t q -o "imqDestinationName=myTestQueue"
Adding a Queue object with the following attributes:
imqDestinationDescription [Destination Description] A Description for the Destination Object imqDestinationName [Destination Name] myTestQueue
Using the following lookup name:
mytestQueue
The object's read-only state:false
To the object store specified by:
java.naming.factory.initial com.sun.jndi.fscontext.RefFSContextFactory java.naming.provider.url file:///home/gael/tmp
Object successfully added.
在代理上创建目标
默认情况下,Sun Java System Message Queue 代理允许自动创建队列目标(请参见 config.properties,其中 imq.autocreate.queue 的默认值为 true)。
如果没有自动创建队列目标,则必须使用代码示例 9-9 (其中 myTestQueue 为目标)中所示的命令在代理上创建目标对象:
代码示例 9-9 在代理上创建目标对象
name (Queue name):
#> cd /opt/sun/mq/bin
#>./imqcmd create dst -t q -n mytestQueue
Username:<admin>
Password:<admin>
Creating a destination with the following attributes:
Destination Name mytestQueue
Destination Type Queue
On the broker specified by:
-------------------------
Host Primary Port
-------------------------
localhost 7676
Successfully created the destination.
您可以将管理对象存储到目录或文件:
为该方案配置 JMS 侦听器适配器
JMS 侦听器适配器配置的第一个页面类似于图 9-13 中的页面:
图 9-13 JMS 侦听器适配器资源参数页
要配置 JMS 侦听器适配器:
- 在 "Message Mapping" 字段中指定 java:com.waveset.adapter.jms.PasswordSyncMessageMapper 以将传入的 JMS 消息转换为同步用户密码工作流可以使用的格式。
- 在此方案中,映射以下属性(通过 PasswordSyncMessageMapper 使 JMS 侦听器适配器可使用这些属性):
- IDMAccountId:该属性由 PasswordSyncMessageMapper 根据在 JMS 消息中传递的 resourceAccountId 和 resourceAccountGUID 属性解析。
- password:可以在 SOAP 请求中收到加密的密码并在 JMS 消息中转发该密码。
图 9-14 映射 IDMAccountID 和 password 帐户属性
在模式映射中配置这些属性字段后,活动同步向导(图 9-15)的 "Attribute Mappings" 部分中的资源即可使用这些属性。
图 9-15 活动同步属性映射
配置活动同步
使用 JMS 侦听器的活动同步向导在高级配置模式下为该方案配置活动同步。
- 显示 "Synchronization Mode" 屏幕(图 9-16)时,您可以保留这些参数的默认值,并单击 "Next" 继续。
默认的同步用户密码工作流接受来自 JMS 侦听器适配器的每个请求并签出 ChangeUserPassword 查看器,然后再签回 ChangeUserPassword 查看器。
图 9-16 "Synchronization Mode" 屏幕
- 显示 "Active Sync Running Settings" 面板时,必须定义与空表单关联的代理管理员 (pwsyncadmin)。
图 9-17 "Active Sync Running Settings" 面板
- 出于调试目的,请将 "Log Level" 设置为 4 并指定日志文件路径,以在特定目录中生成详细日志文件。
例如,图 9-17 中显示的日志文件将保存到 /dvlpt/Idm/pwsynctests/logs/ 目录。
- 完成后,单击 "Next" 继续。
- 请勿更改接下来的两个活动同步向导面板中的默认值。只需单击 "Next",直到显示 "Target Resources" 屏幕(图 9-18)。
图 9-18 "Target Resources" 屏幕
- 使用目标资源选择工具指定目标资源。从 "Available Resources" 列表中选择资源,然后单击 按钮将资源移入 "Target Resources" 列表。
例如,在该方案中,你要将 Windows 密码与 Sun Directory Server 同步,并且还要同步 Identity Manager 密码。
- 单击 "Next",显示 "Target Attribute Mappings" 面板后,选择 "IDM User" 选项卡(如果未选择)。
- 在 "IDM User" 选项卡上,使用表指定 Identity Manager 用户的目标属性映射。
例如,在图 9-19 中定义 password 和 accountID:
图 9-19 定义 password 和 accountID
- 完成后,单击 "Add Mapping"。
- 选择 "LDAP-kosig" 选项卡为 Sun Directory 定义目标属性映射(图 9-20):
图 9-20 为 Sun Directory 定义目标属性映射
- 完成后,单击 "Add Mapping",然后保存更改。
调试配置
您可以使用 Windows PasswordSync 配置应用程序来调试 Windows 端的配置。
- 如果还没有运行 PasswordSync 配置应用程序,请开始运行。
默认情况下,此配置应用程序安装在 "Program Files" > "Sun Java System Identity Manager PasswordSync" > "Configuration" 中。
- 显示 "PasswordSync Configuration" 对话框后,单击 "Test" 按钮。
- 将显示 "Test Connection" 对话框(图 9-21),并出现一则消息,报告是否已成功完成测试连接。
图 9-21 "Test Connection" 对话框
- 单击 "Next" 关闭 "Test Connection" 对话框。
- 单击 "OK" 关闭 "PasswordSync Configuration" 对话框。
之后,JMS 侦听器适配器将运行调试模式,并生成包含调试信息的文件,类似于图 9-22 中的文件:
图 9-22 调试信息文件
PasswordSync 的故障转移部署PasswordSync 的体系结构可以消除 Identity Manager 的 Windows 密码同步部署中出现任何单点故障。
如果配置每个 Active Directory 域控制器 (Active Directory Domain Controller, ADC) 以通过负载平衡器连接到一系列 JMS 客户机中的一个客户机(请参见图 9-23),则 JMS 客户机可向 Message Queue 代理群集发送消息,这确保了在任何 Message Queue 出现故障时也不会丢失任何消息。
图 9-23 PasswordSync 的故障转移部署
如果 Identity Manager 服务器上运行了配置为可用于自动故障转移的 JMS 侦听器适配器,该服务器将与 Message Queue 代理群集进行通讯。虽然适配器一次仅在一个 Identity Manager 上执行,但如果主 ActiveSync 服务器出现故障,则该适配器将开始在辅助 Identity Manager 服务器上轮询与密码相关的消息,并将密码更改传播到下游资源。
有关 PasswordSync 的常见问题PasswordSync 是否可以与用于强制执行自定义密码策略的其他 Windows 密码过滤器一起使用?
是,可以将 PasswordSync 与其他 _WINDOWS_ 密码过滤器一起使用。然而,必须是通知软件包注册表值中列出的最后一个密码过滤器。
必须使用以下注册表路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages(类 型 REG_MULTI_SZ 的值)
默认情况下,安装程序将 Identity Manager 密码拦截设置在列表末尾处。但是,如果您在安装该软件后安装了自定义密码过滤器,则需要将 lhpwic 移到通知软件包列表的结尾处。
可以将 PasswordSync 与其他 Identity Manager 密码策略一起使用。如果在 Identity Manager 服务器端选择了策略,必须传递所有资源密码策略以将密码同步推出至其他资源。因此,您应该使 Windows 本机密码策略的严格程度与 Identity Manager 中定义的最严格的密码策略相同。
是否可以将 PasswordSync Servlet 安装在 Identity Manager 以外的其他应用服务器上?
是。除了 JMS 应用程序需要的任何 JAR 文件以外,PasswordSync Servlet 还需要 spml.jar 和 idmcommon.jar JAR 文件。
PasswordSync 服务是否将密码以明文发送到 lh 服务器?
虽然我们建议通过 SSL 运行 PasswordSync,但是在将敏感数据发送到 Identity Manager 服务器之前,所有数据都是加密的。
密码更改有时是否会导致 com.waveset.exception.ItemNotLocked?
如果启用 PasswordSync,密码更改(即使从用户界面启动)将导致资源的密码更改,从而致使资源与 Identity Manager 进行通信。
如果正确配置了 passwordSyncThreshold 工作流变量,则 Identity Manager 将检查用户对象并确定该用户对象是否已经处理了密码更改。但是,如果用户或管理员同时对同一个用户进行了其他密码更改,则用户对象将被锁定。