Sun Java logo     上一页      目录      索引      下一页     

Sun logo
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


  • Microsoft .NET 1.1 Framework 需要 Internet Explorer 5.01 或更高版本。Internet Explorer 5.0(与 Windows 2000 SP4 捆绑)版本太低。
  • 在 "Keywords" 搜索字段中输入 NET Framework 1.1 Redistributable 可快速找到框架工具包。
  • 该工具包将安装 .NET 1.1 framework。

卸载 PasswordSync 的先前版本

安装更高版本之前,必须先删除先前安装的任何 PasswordSync 实例。


安装 PasswordSync

以下过程介绍了如何安装 PasswordSync 配置应用程序。


必须在与 Identity Manager 同步的域中的每个域控制器上安装 PasswordSync。


  1. 从 Identity Manager 安装介质中,单击 pwsync\IdmPwSync.msi 图标。将显示 "Welcome" 窗口。
  2. 安装向导提供了以下导航按钮:

    • Cancel:随时可以单击以退出向导,而不保存任何更改。
    • Back:单击以返回上一个对话框。
    • Next:单击以前进到下一个对话框。
  3. 阅读 "Welcome" 屏幕上提供的信息,然后单击 "Next" 显示“Choose Setup Type PasswordSync Configuration”窗口。
    PasswordSync 安装
  4. 单击 "Typical" 或 "Complete" 安装完整的 PasswordSync 软件包,或者单击 "Custom" 控制安装哪些软件包组件。
  5. 单击 "Install" 安装该产品。
  6. 将显示一则消息,以通知您是否已成功安装 PasswordSync。

  7. 单击 "Finish" 完成安装过程。
  8. 请确保选择了 "Launch Configuration Application",以便可以开始配置 PasswordSync。有关该过程的详细信息,请参见配置 PasswordSync


    屏幕将显示对话框,提示必须重新启动系统才能使更改生效。在完成 PasswordSync 配置之前不需要重新启动系统,但在实现 PasswordSync 之前必须重新启动域控制器。


表 9-1 介绍了在每个域控制器上安装的文件。

表 9-1  域控制器文件  

安装的组件

描述

%$INSTALL_DIR$%\configure.exe

PasswordSync 配置程序

%$INSTALL_DIR$%\configure.exe.manifest

用于配置程序的数据文件

%$INSTALL_DIR$%\DotNetWrapper.dll

处理 .NET SOAP 通信的 DLL。

%$INSTALL_DIR$%\passwordsyncmsgs.dll

处理 PasswordSync 消息的 DLL

%SYSTEMROOT%\SYSTEM32\lhpwic.dll

密码通知 DLL,该 DLL 实现 Windows PasswordChangeNotify() 功能。


配置 PasswordSync

如果从安装程序运行配置应用程序,则该应用程序会将配置屏幕显示为向导。完成向导后,以后每次运行 PasswordSync 配置应用程序时,都可以通过选择选项卡在屏幕间导航。

使用以下步骤配置 PasswordSync。

  1. 如果还没有运行 PasswordSync 配置应用程序,请开始运行。
  2. 默认情况下,此配置应用程序安装在 "Program Files" >
    Sun Java System Identity Manager PasswordSync > "Configuration" 中。

    将显示 "PasswordSync Configuration" 对话框(请参见图 9-1)。

    图 9-1  PasswordSync 配置对话框
    服务器配置对话框

    根据需要编辑字段。

    • Server 必须用安装 Identity Manager 的全限定主机名或 IP 地址替换。
    • Protocol 指示是否与 Identity Manager 进行安全连接。如果选择了 HTTP,则默认端口为 80;如果选择了 HTTPS,则默认端口为 443。
    • Path 指定到应用程序服务器上 Identity Manager 的路径。
    • URL 是通过将其他字段连接在一起生成的。不可在 URL 字段编辑该值。
  3. 单击 "Next" 显示 "Proxy Server Configuration" 页(图 9-2)。
  4. 图 9-2  代理服务器对话框
    代理服务器对话框

    根据需要编辑字段。

    • 如果必须使用代理服务器,则单击 "Enable"。
    • Server 必须用代理服务器的全限定主机名或 IP 地址替换。
    • Port:指定服务器的可用端口号。
      (默认代理端口为 8080,默认 HTTPS 端口为 443。)
  5. 单击 "Next" 显示 JMS 设置对话框(图 9-3)。
  6. 图 9-3  JMS 设置对话框
    JMS 设置对话框

    根据需要编辑字段。

    • User 指定在队列中加入新消息的 JMS 用户名。
    • PasswordConfirm 指定 JMS 用户的密码。
    • Connection Factory 指定要使用的 JMS 连接工厂的名称。该工厂必须已存在于 JMS 系统中。
    • 大多数情况下,应将 Session Type 设置为 LOCAL,这表示将使用本地会话事务。系统收到每条消息后,将提交会话。其他可能的值包括 AUTOCLIENTDUPS_OK
    • Queue Name 指定密码同步事件的目标查找名称。
  7. 单击 "Next" 显示 JMS 属性对话框(图 9-4)。
  8. 图 9-4  JMS 属性对话框
    JMS 属性对话框

    JMS 属性对话框允许您定义用于构建初始 JNDI 上下文的属性集。必须定义以下名称/值对:

    • java.naming.provider.url — 必须将该值设置为运行 JNDI 服务的计算机的 URL。
    • java.naming.factory.initial — 必须将该值设置为 JNDI 服务提供商的初始上下文工厂的类名(包括软件包)。
    • "Name" 下拉菜单包含 java.naming 软件包中的类的列表。在类名称中选择一个类或类型,然后在 "Value" 字段中输入其相应的值。

  9. 单击 "Next" 显示电子邮件对话框(图 9-5)。
  10. 图 9-5  电子邮件对话框
    电子邮件对话框

    通过电子邮件对话框,您可以配置是否在用户的密码更改没有成功同步(由于通信错误或 Identity Manager 之外的其他错误)时发送电子邮件通知。

    根据需要编辑字段。

    • 选择 Enable Email 启用该功能。如果用户要接收通知,请选择 Email End User。否则,将仅通知管理员。
    • SMTP Server 是发送故障通知时使用的 SMTP 服务器的全限定名或 IP 地址。
    • Administrator Email Address 是用于发送通知的电子邮件地址。
    • Sender抯 Name 是发件人的“友好名”。
    • Sender抯 Address 是发件人的电子邮件地址。
    • Message Subject 指定所有通知的主题行。
    • Message Body 指定通知的文本。

      邮件正文可能包含以下变量。

      • $(accountId) — 尝试更改密码的用户的 accountId。
      • $(sourceEndpoint) — 安装密码通知程序的域控制器的主机名,有助于找到出现故障的计算机。
      • $(errorMessage) — 描述出现的错误的错误消息。
  11. 单击 "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

此位置也存在其他主键,但可以使用配置工具来编辑它们。

表 9-2  注册表主键

主键名称

类型

描述

allowInvalidCerts

REG_DWORD

如果设置为 1,则该主键将在 .NET 客户机上设置以下标志:

  • SECURITY_FLAG_IGNORE_UNKNOWN_CA
  • INTERNET_FLAG_IGNORE_CERT_CN_INVALID
  • INTERNET_FLAG_IGNORE_CERT_DATE_INVALID

结果,客户机将容许证书到期或具有无效的 CN 或主机名。这仅适用于使用 SSL 的情况。

在测试环境中(大多数证书从无效的证书授权机构 [CA] 产生)进行调试时,该设置非常有用。

默认值为 0。

clientConnectionFlags

REG_DWORD

将会传递给 .NET SOAP 客户机的可选连接标志。

默认值为 0。

clientSecurityFlags

REG_DWORD

可以传递到 .NET SOAP 客户机的可选安全标志。

默认值为 0。

installdir

REG_SZ

安装 PasswordSync 应用程序的目录。

soapClientTimeout

REG_DWORD

出现故障之前 SOAP 客户机与 Identity Manager 服务器的通信超时(以毫秒为单位)。


卸载 PasswordSync

要卸载 PasswordSync 应用程序,请转至 Windows 的“控制面板”并选择添加或删除程序。然后选择 Sun Java System Identity Manager PasswordSync 并单击删除。


通过加载 Identity Manager 安装介质并单击 pwsync\IdmPwSync.msi 图标也可以卸载(或重新安装)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 配置 PasswordSync

Identity Manager 提供了 JMS 侦听器适配器,该适配器使密码更改事件可以在 JMS 消息服务器上进行排队,以增强可靠性并确保传送。


有关该适配器的详细信息,请参见 Sun Java System Identity Manager 资源参考资料。


本节通过使用示例方案来提供有关使用 Sun JMS 服务器配置 PasswordSync 的说明。信息通过以下方式进行组织:

概述

本节介绍了示例方案、Windows PasswordSync 解决方案以及 JMS 解决方案。

示例方案

使用 JMS 服务器配置 PasswordSync 的典型(简单)使用案例是使用户在 Windows 上更改其密码,然后令 Identity Manager 获取新密码,最后在 Sun Directory Server 上使用新密码更新用户帐户。

需要为该方案配置以下环境:

以下文件已复制到 Tomcat common/lib 目录以启用 JMS 和 JNDI:

解决方案概述

分析在 Windows PasswordSync 解决方案中起作用的所有组件时,会发生以下情况:

  1. 用户在工作站上更改其密码后,PasswordSync 将向当前 Active Directory 域控制器发送密码修改,并且 Identity Manager 密码捕获 dll(位于域控制器上)将捕获明文密码。
  2. 密码捕获 dll 将向 Identity Manager SOAP 请求处理程序发出 SOAP 请求。
  3. 用户 ID、加密的密码以及必需的 JMS 配置信息全部封装在此 SOAP 请求中。例如,

    代码示例 9-1  SOAP 请求示例  

    POST /idm/servlet/rpcrouter2 HTTP/1.0

    Accept:text/*

    SOAPAction:"urn:lighthouse"

    Content-Type:text/xml; charset=utf-8

    User-Agent:VCSoapClient

    Host: 192.168.1.4:8080

    Content-Length: 1154

    Connection:Keep-Alive

    Pragma:no-cache

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

    <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

    <snp:queuePasswordUpdate xmlns:snp="urn:lighthouse">

    <userEmailAddress xsi:nil="1"/>

    <resourceAccountId>CN=John Smith,OU=people,DC=org,DC=local</resourceAccountId>
    <resourceAccountGUID>b4e1c14b79d3a949a618a607dde7784d</resourceAccountGUID>

    <password>zkpS8qcIJkVBWa/Frp+JqA==</password>

    <accounts xsi:nil="1"/>

    <resourcename xsi:nil="1"/>

    <resourcetype>Windows Active Directory</resourcetype>

    <clientEndpoint>W2003EE</clientEndpoint>

    <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.coopsrccom:389/ou=sunmq,dc=coopsrc,dc=com</JNDIProperties>

    <singleResult>true</singleResult>

    </snp:queuePasswordUpdate>

    </soap:Body>

    </soap:Envelope>

  4. SOAP 处理程序接收请求并使用请求中所包含的 JMS 参数来启动到 JMS Message Queue 代理的连接。然后,SOAP 处理程序将发送包含用户 ID 和加密密码(以及某些稍后将讨论的其他参数)的消息。
  5. 例如,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

  6. Message Queue 代理将消息排入队列中,并且 JMS 侦听器适配器将检索消息。现在,Identity Manager 可以启动工作流。
  7. 图 9-7 说明了该示例方案中使用的配置:


    尽管图中所示 SOAP 处理程序和 Identity Manager 分别位于不同服务器,但您可以在同一服务器上运行它们。


    图 9-7  方案配置
    示例方案配置

JMS 概述

Java 消息服务 (Java Message Service, JMS) API 是一种消息传送标准,该标准允许应用程序组件(基于 Java 2 Platform, Enterprise Edition [J2EE])创建、发送、接收以及读取消息。通过该 API 可实现松散耦合的可靠异步分布式通信。

要发送或接收消息,JMS 客户机必须先连接到 JMS 提供程序,此提供程序通常作为消息代理来实现。该连接将在客户机和代理之间打开一个通信通道。接下来,客户机必须设置一个用于创建、生成和使用消息的会话。

JMS 并未完全定义以下消息传送元素:

这两个对象不是通过编程方式创建的,通常是使用管理工具创建和配置的。之后,它们将存储在对象存储库中,JMS 客户机可以通过标准的 JNDI 查找来访问它们。


有关连接工厂和目标的详细信息,请参阅位于以下位置的 Sun Java System Message Queue Technical Overview:

http://docs.sun.com/source/819-2574/intro.html


图 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 manager

Object successfully added.


您可以使用 ldapsearch 或 LDAP 浏览器来查看新创建的对象。


将管理对象存储到文件

本节介绍了如何使用命令行工具将管理对象存储到文件。

存储连接工厂对象

代码示例 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/tmp

Object 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 侦听器适配器资源参数页

要配置 JMS 侦听器适配器:

  1. 在 "Message Mapping" 字段中指定 java:com.waveset.adapter.jms.PasswordSyncMessageMapper 以将传入的 JMS 消息转换为同步用户密码工作流可以使用的格式。
  2. 在此方案中,映射以下属性(通过 PasswordSyncMessageMapper 使 JMS 侦听器适配器可使用这些属性):
    • IDMAccountId:该属性由 PasswordSyncMessageMapper 根据在 JMS 消息中传递的 resourceAccountIdresourceAccountGUID 属性解析。
    • password:可以在 SOAP 请求中收到加密的密码并在 JMS 消息中转发该密码。
    • 图 9-14  映射 IDMAccountID 和 password 帐户属性
      映射 IDMAccountID 和 password 帐户属性

      在模式映射中配置这些属性字段后,活动同步向导(图 9-15)的 "Attribute Mappings" 部分中的资源即可使用这些属性。


      此处不提供任何身份模板。


      图 9-15  活动同步属性映射
      活动同步属性映射

配置活动同步

使用 JMS 侦听器的活动同步向导在高级配置模式下为该方案配置活动同步。

  1. 显示 "Synchronization Mode" 屏幕(图 9-16)时,您可以保留这些参数的默认值,并单击 "Next" 继续。
  2. 默认的同步用户密码工作流接受来自 JMS 侦听器适配器的每个请求并签出 ChangeUserPassword 查看器,然后再签回 ChangeUserPassword 查看器。

    图 9-16  "Synchronization Mode" 屏幕

  3. 显示 "Active Sync Running Settings" 面板时,必须定义与空表单关联的代理管理员 (pwsyncadmin)。
  4. 图 9-17  "Active Sync Running Settings" 面板

  5. 出于调试目的,请将 "Log Level" 设置为 4 并指定日志文件路径,以在特定目录中生成详细日志文件。
  6. 例如,图 9-17 中显示的日志文件将保存到 /dvlpt/Idm/pwsynctests/logs/ 目录。

  7. 完成后,单击 "Next" 继续。
  8. 请勿更改接下来的两个活动同步向导面板中的默认值。只需单击 "Next",直到显示 "Target Resources" 屏幕(图 9-18)。
  9. 图 9-18  "Target Resources" 屏幕

  10. 使用目标资源选择工具指定目标资源。从 "Available Resources" 列表中选择资源,然后单击 按钮将资源移入 "Target Resources" 列表。
  11. 例如,在该方案中,你要将 Windows 密码与 Sun Directory Server 同步,并且还要同步 Identity Manager 密码。

  12. 单击 "Next",显示 "Target Attribute Mappings" 面板后,选择 "IDM User" 选项卡(如果未选择)。
  13. 在 "IDM User" 选项卡上,使用表指定 Identity Manager 用户的目标属性映射。
  14. 例如,在图 9-19 中定义 passwordaccountID

    图 9-19  定义 password 和 accountID
    映射 password 和 accountID 目标属性

  15. 完成后,单击 "Add Mapping"。
  16. 选择 "LDAP-kosig" 选项卡为 Sun Directory 定义目标属性映射(图 9-20):
  17. 图 9-20  为 Sun Directory 定义目标属性映射
    为 Sun Directory 定义目标属性映射

  18. 完成后,单击 "Add Mapping",然后保存更改。

调试配置

您可以使用 Windows PasswordSync 配置应用程序来调试 Windows 端的配置。

  1. 如果还没有运行 PasswordSync 配置应用程序,请开始运行。
  2. 默认情况下,此配置应用程序安装在 "Program Files" > "Sun Java System Identity Manager PasswordSync" > "Configuration" 中。

  3. 显示 "PasswordSync Configuration" 对话框后,单击 "Test" 按钮。
  4. 将显示 "Test Connection" 对话框(图 9-21),并出现一则消息,报告是否已成功完成测试连接。
  5. 图 9-21  "Test Connection" 对话框

  6. 单击 "Next" 关闭 "Test Connection" 对话框。
  7. 单击 "OK" 关闭 "PasswordSync Configuration" 对话框。
  8. 之后,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 的故障转移部署

PasswordSync 的故障转移部署概述


Message Queue 群集可能需要数据库以实现消息的持久保存。(供应商的产品文档中提供了有关配置 Message Queue 代理群集的说明。)


如果 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 中定义的最严格的密码策略相同。


密码拦截 DLL 并不强制执行任何密码策略。


是否可以将 PasswordSync Servlet 安装在 Identity Manager 以外的其他应用服务器上?

是。除了 JMS 应用程序需要的任何 JAR 文件以外,PasswordSync Servlet 还需要 spml.jaridmcommon.jar JAR 文件。

PasswordSync 服务是否将密码以明文发送到 lh 服务器?

虽然我们建议通过 SSL 运行 PasswordSync,但是在将敏感数据发送到 Identity Manager 服务器之前,所有数据都是加密的。

密码更改有时是否会导致 com.waveset.exception.ItemNotLocked?

如果启用 PasswordSync,密码更改(即使从用户界面启动)将导致资源的密码更改,从而致使资源与 Identity Manager 进行通信。

如果正确配置了 passwordSyncThreshold 工作流变量,则 Identity Manager 将检查用户对象并确定该用户对象是否已经处理了密码更改。但是,如果用户或管理员同时对同一个用户进行了其他密码更改,则用户对象将被锁定。



上一页      目录      索引      下一页     


文件号码: 820-0140。   版权所有 2006 Sun Microsystems, Inc. 保留所有权利。