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 中定義的其他資源保持同步。必須在將與 Identity Manager 同步之網域中的每個網域控制器上安裝 PasswordSync。必須將 PasswordSync 與 Identity Manager 分開安裝。
在網域控制器上安裝 PasswordSync 後,該控制器將與做為 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 Resources Reference」中的「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 圖示。將顯示歡迎視窗。
安裝精靈提供了以下瀏覽按鈕:
- 請閱讀歡迎螢幕上提供的資訊,然後按 [Next] 以顯示 [Choose Setup Type PasswordSync Configuration] 視窗。
PasswordSync 安裝- 按一下 [Typical] 或 [Complete] 以安裝完整的 PasswordSync 套裝軟體,或按一下 [Custom] 以控制要安裝套裝軟體的哪些部分。
- 按一下 [Install] 以安裝產品。
成功安裝 PasswordSync 後,螢幕上將顯示訊息告知您安裝成功。
- 按一下 [Finish] 以完成安裝程序。
請確定選取 [Launch Configuration Application],以便可以開始配置 Password Sync。請參閱「配置 PasswordSync」,以取得有關該程序的詳細資訊。
表 9-1 說明了安裝在每個網域控制器上的檔案。
配置 PasswordSync如果您從安裝程式執行配置應用程式,則該應用程式會將配置螢幕顯示為精靈。完成精靈後,以後每次執行 PasswordSync 配置應用程式時,都可以透過選取標籤在螢幕之間瀏覽。
執行以下步驟來配置 PasswordSync
- 如果尚未執行 PasswordSync 配置應用程式,請將其啟動。
依預設,此配置應用程式安裝在 [Program Files] >
Sun Java System Identity Manager PasswordSync > [Configuration] 中。螢幕上將顯示 [PasswordSync Configuration] 對話方塊 (請參閱圖 9-1)。
圖 9-1 [PasswordSync Configuration] 對話方塊
依需要編輯以下欄位。
- 按 [Next] 以顯示代理伺服器配置頁面 (圖 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 電子郵件對話方塊
透過 [Email] 對話方塊,您可以配置當使用者的密碼變更未成功同步化 (由於通訊錯誤或 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 file 中。登錄機碼
您可以使用 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 Resources Reference」以取得有關設定該配接卡的更多資訊。
您必須配置以下資源參數:
實作同步化使用者密碼工作流程
預設的同步化使用者密碼工作流程接受來自 JMS 偵聽程式配接卡的每個請求,出庫使用 ChangeUserPassword 檢視器,然後再將 ChangeUserPassword 檢視器入庫納管。完成簽入後,工作流程將反覆運算所有資源帳號並選取除來源資源以外的所有資源。Identity Manager 將使用電子郵件通知使用者所有資源上的密碼變更是否成功。
如果您要預設實作同步化使用者密碼工作流程,請將其指定為 JMS 偵聽程式配接器實例的程序規則。可以在配接器的 Active Sync 精靈中指定程序規則。
如果您要修改預設的同步化使用者密碼工作流程,請複製 $WSHOME/sample/wfpwsync.xml 檔案並進行修改。然後將修改的工作流程匯入 Identity Manager。
您可能要對預設工作流程執行的一些修改包括:
如需有關使用工作流程的詳細資訊,請參閱「Sun Java System Identity Manager Workflows, Forms, and Views」。
設定通知
Identity Manager 提供了 [Password Synchronization Notice] 和 [Password Synchronization Failure Notice] 電子郵件範本。這些範本可通知使用者在多個資源之間變更密碼的嘗試是否成功。
兩個範本均應更新,以便在使用者需要進一步幫助時,為其提供有關下一步操作的公司特定資訊。請參閱自訂電子郵件範本。
使用 Sun JMS 伺服器配置 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
- Tomcat 5.0.28 running on Suse Linux 10.0
- 在 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 請求。
此 SOAP 請求中封裝有使用者 ID、已加密的密碼以及必要的 JMS 配置資訊。例如,
- 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 Message Service (JMS) API 是一個訊息傳送標準,可讓應用程式元件 (基於 Java 2 Platform, Enterprise Edition (J2EE)) 建立、傳送、接收以及讀取訊息。此 API 可啟用鬆耦合、穩定且非同步的分散式通訊。
若要傳送或接收訊息,必須首先將 JMS 用戶端連線至 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 中,[Connection Factory] 和 [Queue Name] 都是 LDAP RDN,其 (當與 java.naming.provider.url 耦合時) 可形成完整 DN。一個簡單的 ldapsearch 即可顯示管理的物件項目:
代碼範例 9-4 連線工廠和佇列名稱範例
連線工廠:
#> 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 偵聽程式 [Adapter Resource Parameters] 頁面
若要配置 JMS 偵聽程式配接卡,請:
- 在 [Message Mapping] 欄位中指定 java:com.waveset.adapter.jms.PasswordSyncMessageMapper,以將內送 JMS 訊息轉換為同步化使用者密碼工作流程可以使用的格式。
- 為此方案對映以下屬性 (JMS 偵聽程式配接卡可透過 PasswordSyncMessageMapper 使用):
- IDMAccountId:此屬性由 PasswordSyncMessageMapper 根據 JMS 訊息中傳送的 resourceAccountId 和 resourceAccountGUID 屬性進行解析。
- password:以 SOAP 請求接收加密密碼並以 JMS 訊息轉寄該密碼。
圖 9-14 對映 IDMAccountId 與 password 帳號屬性
在模式對映中配置這些屬性欄位時,Active Sync 精靈 (圖 9-15) 之 [Attribute Mappings] 區段中的資源可以使用這些屬性。
圖 9-15 Active Sync 屬性對映
配置 Active Sync
使用 JMS 偵聽程式的 Active Sync 精靈在進階配置模式下為此方案配置 Active Sync。
- 當 [Synchronization Mode] 螢幕顯示時 (圖 9-16),您可以保持參數設定為預設值,然後按 [Next] 繼續。
預設的同步化使用者密碼工作流程接受來自 JMS 偵聽程式配接卡的每個請求,出庫使用 ChangeUserPassword 檢視器,然後再將 ChangeUserPassword 檢視器入庫納管。
圖 9-16 [Synchronization Mode] 螢幕
- 顯示 [Active Sync Running Settings] 面板時,您必須定義與空白表單關聯的代理伺服器管理員 (pwsyncadmin)。
圖 9-17 [Active Sync Running Settings] 面板
- 為除錯目的,將記錄層級設定為 4 並指定記錄檔路徑,以在特定目錄中產生詳細的記錄檔。
例如,圖 9-17 中顯示的記錄檔將儲存到 /dvlpt/Idm/pwsynctests/logs/ 目錄中。
- 完成後,按 [Next] 繼續。
- 請勿變更接下來的兩個 Active Sync 精靈面板中的預設值。您只需按 [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] 對話方塊
- 按一下 [Close] 以關閉 [Test Connection] 對話方塊。
- 按一下 [OK] 以關閉 [PasswordSync Configuration] 對話方塊。
然後 JMS 偵聽程式配接卡將在除錯模式中執行,並在檔案中產生除錯資訊,與圖 9-22 所示相似:
圖 9-22 除錯資訊檔案
PasswordSync 的容錯移轉部署PasswordSync 的架構有助於消除 Identity Manager 之 Windows 密碼同步化部署中的任何單一故障點。
如果您將每個 Active Directory 網域控制器 (ADC) 配置為透過負載平衡器連線到一系列 JMS 用戶端之一 (請參閱圖 9-23),則 JMS 用戶端可以向 Message Queue 代理程式叢集傳送訊息,以確保有 Message Queue 發生故障時不會遺失訊息。
圖 9-23 PasswordSync 的容錯移轉部署
執行配置為自動容錯移轉之 JMS 偵聽程式配接卡的 Identity Manager 伺服器將連絡 Message Queue 代理程式叢集。儘管該配接卡每次僅在一個 Identity Manager 上執行,但是如果主 ActiveSync 伺服器發生故障,則該配接卡將開始在次要 Identity Manager 伺服器上輪詢密碼相關訊息,並將密碼變更向外傳播到下行流程的資源。
有關 PasswordSync 的常見問題PasswordSync 是否可以與其他用於強制自訂密碼策略的 Windows 密碼篩選器配合使用?
是的,您可以將 PasswordSync 與其他 _WINDOWS_ 密碼篩選器配合使用。然而,必須是 [Notification Package] 登錄值中列出的最後一個密碼篩選器。
您必須使用以下登錄路徑:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages (類型 REG_MULTI_SZ 的值)
依預設,安裝程式將 Identity Manager 密碼截取置於清單結尾。但是,如果您在安裝該軟體後安裝自訂密碼篩選器,則需要將 lhpwic 移至 [Notification Package] 清單的結尾。
您可以將 PasswordSync 與其他 Identity Manager 密碼策略配合使用。在 Identity Manager 伺服器端檢查策略時,必須傳送所有資源密碼策略,才可以將密碼同步化推出至其他資源。因此,您應使 Windows 本機密碼策略具有與 Identity Manager 中定義的大多數限制性密碼策略同等的限制性。
是否可以將 PasswordSync Servlet 安裝在 Identity Manager 以外的其他應用伺服器上?
可以。除了 JMS 應用程式需要的所有 JAR 檔案之外,PasswordSync Servlet 還需要 JAR 檔案 spml.jar 和 idmcommon.jar。
PasswordSync 服務是否將密碼以明文傳送至 lh 伺服器?
雖然我們建議透過 SSL 執行 PasswordSync,但是在傳送至 Identity Manager 伺服器之前,所有敏感資料都是加密的。
密碼變更有時是否會導致 com.waveset.exception.ItemNotLocked?
如果啟用 PasswordSync,密碼變更 (即使從使用者介面啟動) 會使資源的密碼發生變更,而這會導致資源與 Identity Manager 連絡。
如果正確配置 passwordSyncThreshold 工作流程變數,則 Identity Manager 將檢查使用者物件並確定該使用者物件已處理密碼變更。但是,如果使用者或管理員同時對同一使用者進行其他密碼變更,則使用者物件將被鎖定。