Sun Java System Messaging Server 6 2005Q1 管理指南 |
第 6 章
啟用單次登入 (SSO)單次登入是指一般使用者進行一次認證 (即使用使用者 ID 和密碼登入) 後即可存取多個應用程式的功能。Sun Java System Access Manager (請注意,原名為 Identity Server) 是用於 Sun Java System 伺服器之 SSO 的法定閘道。即,使用者必須登入 Access Manager 才能存取其他已配置 SSO 的伺服器。
例如,如果配置正確,使用者可以在 Sun Java System Access Manager 登入畫面處登入,並可以在其他視窗中存取 Messenger Express,而無需再次登入。同樣,如果 Sun Java System Calendar Server 配置正確,則使用者可以在 Sun Java System Access Manager 登入畫面登入,然後可以在其他視窗中存取其行事曆,而無需再次登入。
應注意,Messaging Server 提供兩種部署 SSO 的方法。第一種方法是透過 Sun Java System Access Manage 部署,第二種方法是透過 Communications Server 信任圈技術部署。使用信任圈是實作 SSO 的老舊方法。儘管此方法可提供一些 Access Manager SSO 所沒有的功能,但是我們不建議使用此方法,因為未來的所有開發均將使用 Access Manager。但是,這兩種方法均在以下各節中描述:
用於 Sun Java System 伺服器的 Access Manager SSO本節描述使用 Access Manager 的 SSO。包含以下各節:
SSO 限制和注意事項
配置 Messaging Server 以支援 SSO
有四個 configutil 參數支援 Messaging Server SSO。在這四個參數中,僅有 local.webmail.sso.amnamingurl 參數是 Messaging Server 啟用 SSO 時所必需的。若要啟用 SSO,請將此參數設定為 Access Manager 在其中執行命名服務的 URL。通常,此 URL 是 http://server/amserver/namingservice。範例:
configutil -o local.webmail.sso.amnamingurl -v http://sca-walnut:88/amserver/namingservice
注意 Access Manager SSO 不查看啟用較舊 SSO 機制的 local.webmail.sso.enable。應將 local.webmail.sso.enable 保留為 off 或不進行設定,否則系統將記錄有關遺漏配置參數的警告訊息,僅舊的 SSO 機制需要這些配置參數。
您可以使用 configutil 指令修改表 6-3 中所示的 SSO 配置參數。
SSO 的疑難排解
如果 SSO 有問題,請先檢查 Webmail 記錄檔 (msg_svr_base/log/http) 以查找錯誤。提高記錄級別可能會很有幫助 (configutil -o logfile.http.loglevel -v debug)。如果此操作沒有幫助,請檢查 msg_svr_base/log/http_sso 中的 amsdk 訊息,然後提高 amsdk 的記錄級別 (configutil -o local.webmail.sso.amloglevel -v 5)。請注意,新的記錄級別僅在伺服器重新啟動後才會生效。
如果 SSO 仍有問題,請確保您在登入期間使用的是 Access Manager 和 Messaging Server 的完全合格的主機名稱。由於 cookie 僅在同一網域的伺服器之間共用,並且瀏覽器不知道本地伺服器名稱的網域,因此必須在瀏覽器中使用完全合格的名稱才能使 SSO 工作。
信任圈 SSO (老舊)本節描述信任圈 SSO。我們建議您不要使用這種 SSO 方法,因為未來的所有開發均將針對 Access Manager 進行。但是,信任圈 SSO 能提供 Access Manage SSO 目前所沒有的某些功能。本節包含以下各節:
信任圈 SSO 簡介和定義
部署 SSO 之前,請務必瞭解以下術語。
- SSO:單次登入。登入一個應用程式並可存取其他應用程式的功能。使用者識別在所有應用程式中均相同。
- 信任的應用程式。共用 SSO 方案 (SSO 字首) 並信任彼此的 cookie 和驗證的應用程式。亦稱為同層 SSO 應用程式。
- 信任圈。信任的應用程式圈。它們共用同一個 SSO 字首。
- SSO 字首。由部署 SSO 的使用者定義並為應用程式所知的字串,以便這些應用程式可以使用該字串查找由同一信任圈中的其他應用程式產生的 cookie。具有不同字首的應用程式不在同一圈中,當使用者在這些應用程式之間移動時,需要重新認證。在配置設定中,字首有時 (並非經常) 明確包含標尾(「-」)。
- 應用程式 ID。(appid)。部署 SSO 的使用者為 SSO 圈中的每個應用程式定義的唯一字串。
- SSO Cookie。瀏覽器用於記住使用者已透過某個應用程式認證的記號。cookie 名稱的格式為 SSO_prefix-application ID。cookie 的值為 SSO 金鑰,通常是應用程式產生的階段作業 ID。
- Cookie 網域。應用程式被限制為只能在其中傳送 cookie 的網域。這是 DNS 意義上的網域。
- 驗證 URL。某個應用程式將使用此 URL 驗證它找到的其他應用程式的 cookie。
信任圈 SSO 應用程式
實作 SSO 之前,您必須首先考量哪些應用程式將位於此信任圈中。可處於此信任圈中的應用程式包含 Messenger Express (帶或不帶 Messenger Express Multiplexor)、Calendar Express 和舊的 iPlanet Delegated Administrator for Messaging (不建議使用,因為它僅支援 Sun LDAP Schema 1)。
表 6-2 中顯示了可透過 SSO 彼此存取的應用程式。從使用者的角度來看,登入第一欄中的任一應用程式後,如果使用者無需重新輸入使用者 ID 和密碼即可存取頂端列中的應用程式,則說明 SSO 在運作。
信任圈 SSO 限制
- 一同使用的 SSO 應用程式必須位於同一網域。
- SSO 應用程式必須擁有對彼此的 SSO 驗證 URL 的存取權。
- 瀏覽器必須支援 cookie。
- 出於安全目的,SSO 不應在執行瀏覽器的機器上使用。
- 若要切換至其他身份,需要重新啟動瀏覽器。
- 假設單次登出已在 Messenger Express 和 Sun Java System Calendar Server 中啟用,如果您登出 Sun Java System Calendar Server,則應再次登入 Messenger Express。如果您登出 Messenger Express,則應再次登入 Sun Java System Calendar Server。但是,目前並不是這樣工作的。在登出某個應用程式後,您可以仍在其他應用程式中保持登入狀態。
信任圈 SSO 部署方案範例
最簡單的 SSO 部署方案僅包含 Messenger Express 和 iPlanet Delegated Administrator for Messaging。較複雜的方案可透過在相同機器或不同機器上,新增使用同一 SSO 字首 (以便它們位於同一信任圈中) 的 Calendar Express 來建立。如圖 6-1 中所示。
圖 6-1 簡單的 SSO 部署
更複雜的部署將包括 Messenger Express Multiplexor 和負載平衡器。
圖 6-2 複雜的 SSO 部署
設定信任圈 SSO
本節描述如何為 Messenger Express、iPlanet Delegated Administrator for Messaging 和 Calendar Manager 設定 SSO。
- 為 SSO 配置 Messenger Express。
- 設定適當的 SSO configutil 參數。
若要為具有 Delegated Administrator 的 Messenger Express 啟用單次登入,請如下設定配置參數 (假設您的預設網域為 siroe.com)。這些參數在表 6-3 中有描述。您必須是超級使用者。使用 cd 轉到 instance_root
- 變更配置後,重新啟動 Messenger Express HTTP 伺服器。
cd instance_root
./stop-msg http
./start-msg http- 為 SSO 配置 Directory Server。
- 在目錄中建立代理使用者帳號。
代理使用者帳號可讓 Delegated Administrator 連結至 Directory Server 以進行代理認證。使用以下 LDIF 程式碼 (proxy.ldif),您可以建立使用 ldapadd 的代理使用者帳號項目。
ldapadd -h mysystem.siroe.com -D "cn=Directory Manager" -w password -v -f proxy.ldif
dn: uid=proxy, ou=people, o=siroe.com, o=isp
objectclass: top
objectclass: person
objectclass: organizationalperson
objectclass: inetorgperson
uid: proxy
givenname: Proxy
sn: Auth
cn: Proxy Auth
userpassword: proxypassword- 為代理使用者帳號認證建立適當的 ACI。
使用 ldapmodify 公用程式,為安裝 Delegated Administrator 時建立的每個字尾建立 ACI。
osiroot - 您輸入的用於儲存使用者資料的字尾 (預設為 o=isp)。osiroot 為組織樹的根。
dcroot - 您輸入的用於儲存網域資訊的字尾。(預設為 o=internet。)
osiroot - 您輸入的用於儲存配置資訊的字尾,它應與您輸入的用於儲存使用者資料的值相同。
以下是較早建立的代理使用者的 osiroot 的 ACI 項目 (aci1.ldif) 範例:
dn: o=isp
changetype: modify
add: aci
aci: (target="ldap:///o=isp")(targetattr="*")(version 3.0; acl
"proxy";allow (proxy) userdn="ldap:///uid=proxy, ou=people,
o=siroe.com, o=isp";)ldapmodify -h siroe.com -D "cn=Directory Manager" -w password -v -f aci1.ldif
為 dcroot 建立類似的 ACI 項目 (aci2.ldif):
dn: o=internet
changetype: modify
add: aci
aci: (target="ldap:///o=internet")(targetattr="*")(version 3.0; acl "proxy";allow (proxy) userdn="ldap:///uid=proxy, ou=people, o=siroe.com, o=isp";)ldapmodify -h siroe.com -D "cn=Directory Manager" -w password -v -f aci2.ldif
- 配置 Delegated Administrator
- 將代理使用者憑證和環境 cookie 名稱新增至 Delegated Administrator 的 resource.properties 檔案。
在 Delegated Administrator 的 iDA_server_root/nda/classes/netscape/nda/servlet/resource.properties 檔案中,取消註釋並修改以下項目:
LDAPDatabaseInterface-ldapauthdn=Proxy_Auth_DN
LDAPDatabaseInterface-ldapauthpw=Proxy_Auth_Password
NDAAuth-singleSignOnId=SSO_Prefix-
NDAAuth-applicationId=DelAdminID例如:
LDAPDatabaseInterface-ldapauthdn=
uid=proxy, ou=people, o=siroe.com, o=isp
LDAPDatabaseInterface-ldapauthpw=proxypassword
NDAAuth-singleSignOnId=ssogrp1-
NDAAuth-applicationId=ida- 新增參加伺服器的驗證 URL。
若要驗證收到的單次登入 cookie,Delegated Administrator 必須知道要與誰聯絡。您必須為所有已知的參加伺服器提供驗證 URL。
以下範例假設 Messenger Express 已安裝,並且其應用程式 ID 為 msg5。編輯 Delegated Administrator 的 iDA_server_root/nda/classes/netscape/nda/servlet/resource.properties 檔案,並新增如下項目:
verificationurl-ssogrp1-msg5=http://webmail_hostname:port/VerifySSO?
verificationurl-ssogrp1-ida=http://iDA_hostname:port/VerifySSO?
verificationurl-ssogrp1-ics50=http://iCS_hostname:port/VerifySSO?- 新增 Delegated Administrator 單次登入 cookie 資訊並啟用 UTF8 參數編碼。
- 為 Delegated Administrator 定義環境識別碼。
編輯 Web_Server_Root/https-instancename/config/servlets.properties,取消註釋所有包含文字 servlet.*.context=ims50 的行。其中,* 為任一字串。
- 在 Enterprise Server 配置中指定環境的 cookie 名稱。
編輯 Enterprise Server 檔案 Web_Server_Root/https-instancename/config/contexts.properties,將以下行新增至檔案的底部,#IDACONF-Start 行之前:
context.ims50.sessionCookie=ssogrp1-ida
- 為 ims5 環境啟用 UTF8 參數編碼。
若要為 Enterprise Server 配置中的 ims5 環境啟用 UTF8 參數編碼,請將以下項目新增至 Enterprise Server 的 WebServer_Root/https-instancename/config/contexts.properties 檔案:
context.ims50.parameterEncoding=utf8
- 重新啟動 Messenger Express。
按照步驟 1a 至 2c 所述進行配置變更後,您必須重新啟動 Messenger Express 以使變更生效:
WebServer_Root/https-iinstance_name/stop
WebServer_Root/https-instancename/start- 如果您要在此 SSO 群組中部署行事曆,請配置 Calendar Server。
編輯 ics.conf,並新增以下內容:
sso.appid = "ics50"
sso.appprefix = "ssogrp1"
sso.cookiedomain = ".red.iplanet.com"
sso.enable = "1"
sso.singlesignoff = "true"
sso.userdomain = "mysystem.red.iplanet.com"
sso.ims5.url="http://mysystem.red.iplanet.com:80/VerifySSO?"
sso.ida.url=http://mysystem.red.iplanet.com:8080/VerifySSO?- 重新啟動 Calendar Server
start-cal
- 重新啟動 Messenger Express HTTP 伺服器:
msg_svr_base/sbin/stop-msg http
msg_svr_base/sbin/start-msg httpMessenger Express 信任的 SSO 配置參數
您可以使用 configutil 指令修改表 6-3 中所示的 Messenger Express 單次登入配置參數。如需有關 configutil 的更多資訊,請參閱 Messaging Server Reference Manual。
表 6-3 信任圈單次登入參數
參數
描述
local.sso.appid.verifyurl
為同層 SSO 應用程式設定驗證 URL 值。appid 是同層 SSO 應用程式
(其 SSO cookie 將生效) 的應用程式 ID。例如,Delegated Administrator 的預設 appid 為 nda45。其實際值由 Delegated Administrator 的 resource.properties 檔案項目 NDAAuth-applicationID 指定。應為每個信任的同層 SSO 應用程式定義一個參數。驗證 URL 的標準格式為:
http://nda-host:port/VerifySSO?
如果您要在多個 Messenger Express Multiplexor 和郵件儲存伺服器(執行 Messenger Express) 前端或行事曆前端使用負載平衡器,請確定為 verifyurl 中具有實際主機名稱的每個實體系統指定不同的 appid。這將確保使用正確的系統來驗證 cookie。
local.webmail.sso.
cookiedomain此參數的字串值用於設定由 Messenger Express HTTP 伺服器設定的所有 SSO cookie 的 cookie 網域值。預設值為空。
該網域必須匹配 Messenger Express 瀏覽器用於存取伺服器的 DNS 網域。它不是託管網域名稱。
local.webmail.sso.enable
啟用或停用所有單次登入功能,包括擷取登入頁面後接受和驗證用戶端提供的 SSO cookie、在成功登入後將 SSO cookie 傳回至用戶端,以及回應來自其他 SSO 合作夥伴的要求驗證其自身 cookie 的請求。
如果設定的值不為零,伺服器將執行所有 SSO 功能。
如果設定為零,伺服器將不執行這些 SSO 功能中的任何一個。
預設值為零。
local.webmail.sso.id
當格式化由 Messenger Express HTTP 伺服器設定的 SSO cookie 時,此參數的字串值將用作應用程式 ID 值。預設值為空。
這是任意字串。其值必須匹配您在 Delegated Administrator 的 resource.properties 檔案中為其指定的值。resource.properties 中的相應項目為:
Verifycationurl-XXX-YYY=http://webmailhost:webmailport/VerifySSO?
其中,XXX 是上面設定的 local.webmail.sso.prefix 值,YYY 是此處設定的 local.webmail.sso.id 值。
local.webmail.sso.prefix
當格式化由 Messenger Express HTTP 伺服器設定的 SSO cookie 時,此參數的字串值將用作字首值。伺服器將僅識別帶有此字首的 SSO cookie,所有其他 SSO cookie 將被忽略。
此參數的空值將有效地停用伺服器上的所有 SSO 功能。
預設值為空。
此字串必須與 iPlanet Delegated Administrator for Messaging 在其 resource.properties 檔案中所使用的字串 (不帶尾隨 -) 相符。例如,如果:
NDAAuth-singleSignOnID=ssogrp1-
則應在此處將該值設定為 ssogrp1。
local.webmail.sso.
singlesignoff如果將此參數的整數值設定為非零,當用戶端登出時,將清除用戶端(其字首值匹配 local.webmail.sso.prefix 中配置的值) 上的所有 SSO cookie。
如果設定為零,當用戶端登出時,Messenger Express 將清除自己的 SSO cookie。
預設值為零。