單次登入功能可讓一般使用者進行一次認證 (亦即使用使用者 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 進行。但是,這兩種方法均在以下各節中說明:
本節說明使用 Access Manager 的 SSO。包含以下各節:
Messenger Express 階段作業僅在 Access Manager 階段作業有效時才有效。如果使用者登出 Access Manager,則 Webmail 階段作業將自動關閉 (單次登出)。
一同使用的 SSO 應用程式必須位於同一 DNS 網域。(亦稱為 cookie 網域)。
SSO 應用程式必須擁有對 Access Manager 驗證 URL (命名服務) 的存取權。
瀏覽器必須具有 cookie。
四個 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 指令修改 SSO 配置參數,如表 6–3 中所示。
表 6–1 Access Manager 單次登入參數
如果 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 方法,因為未來的所有開發均將針對 Access Manager 進行。然而,信任圈 SSO 中可用的某些功能,在 Access Manager SSO 中並不可用。本節包含以下小節:
部署 SSO 之前,請務必瞭解以下術語。
SSO︰單次登入。登入一個應用程式並可存取其他應用程式的功能。使用者識別在所有應用程式中均相同。
信任的應用程式。共用 SSO 方案 (SSO 前綴) 並信任彼此的 cookie 和驗證的應用程式。亦稱為同級 SSO 應用程式。
SSO 前綴。由部署 SSO 的使用者定義並為應用程式所知的字串,以便這些應用程式可以使用該字串查找由同一信任圈中的其他應用程式產生的 cookie。具有不同前綴的應用程式不在同一圈中,當使用者在這些應用程式之間移動時,需要重新認證。在配置設定中,前綴有時 (並非總是) 明確包含尾隨 - (「-」)。
SSO Cookie。瀏覽器用於記住使用者已透過某個應用程式認證的記號。Cookie 名稱的格式為 SSO_prefix-application ID。Cookie 的值為 SSO 金鑰,通常是應用程式產生的階段作業 ID。
Cookie 網域。應用程式被限制為只能在其中傳送 cookie 的網域。這是 DNS 意義上的網域。
驗證 URL。某應用程式將使用 URL 驗證它找到的其他應用程式的 cookie。
實作 SSO 之前,您必須首先考量哪些應用程式將位於此信任圈中。可處於此信任圈中的應用程式包括 Messenger Express (帶或不帶 Messenger Express Multiplexor)、Calendar Express 和舊的 iPlanet Delegated Administrator for Messaging (不建議使用,因為它僅支援 Sun LDAP Schema 1)。
表 6–2 顯示透過 SSO 可彼此存取的應用程式。從使用者的角度來看,登入第一欄中的任一應用程式後,如果使用者無需重新輸入使用者 ID 和密碼即可存取頂端列中的應用程式,則說明 SSO 在運作。
表 6–2 SSO 互通性
至︰
From: |
Calendar Express |
Messenger Express |
Messenger Express Multiplexor |
Delegated Administrator |
---|---|---|---|---|
Calendar Express |
SSO |
SSO |
SSO |
SSO |
Messenger Express |
SSO |
不適用 |
不適用 |
SSO |
Messenger Express Multiplexor |
SSO |
不適用 |
不適用 |
SSO |
Delegated Administrator |
SSO |
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 部署方案僅由 Messenger Express 和 Delegated Administrator 組成。可以透過在相同機器或不同機器上,使用同一 SSO 前綴 (以便它們位於同一信任圈中) 增加 Calendar Express 來建立較複雜的方案。如圖 6–1 所示。
更複雜的部署將包括 Messenger Express Multiplexor 和負載平衡器。
本小節說明為 Messenger Express、Delegated Administrator 和 Calendar Manager 設定 SSO。
針對 SSO 配置 Messenger Express。
設定適當的 SSO configutil 參數。
若要啟用 Messenger Express 和 Delegated Administrator 單次登入,請如下設定配置參數 (假設預設網域為 siroe.com)。這些參數在表 6–3 中進行說明。您必須是超級使用者。cd 至 instance_root
configutil -o local.webmail.sso.enable -v 1 configutil -o local.webmail.sso.prefix -v ssogrp1 |
ssogrp1 是 iDA 使用的預設 SSO 前綴,儘管您可以選擇其他前綴,但在配置 iDA 和 iCS 時使用預設可以省去一些鍵入作業。
configutil -o local.webmail.sso.id -v ims5 |
ims5 是您選取用來識別 Messenger Express (ME) 以區分其他應用程式的名稱。
configutil -o local.webmail.sso.cookiedomain -v “.siroe.com” |
上述網域必須與 ME/瀏覽器用戶端連線至伺服器使用的網域相符。因此,儘管此伺服器上的託管網域可以稱為 xyz.com,但是我們必須使用 DNS 中的實際網域。此值必須以小數點號開頭。
configutil -o local.webmail.sso.singlesignoff -v 1 configutil -o local.sso.ApplicationID.verifyurl -v \ "http://ApplicationHost:port/VerifySSO?" |
ApplicationID 是我們提供給 SSO 應用程式的名稱 (例如︰對於 Delegated Administrator是 ida,對於 Calendar Server 是 ics50)。ApplicationHost:port 是應用程式的主機和連接埠號碼。對於每個非 Messaging Server 應用程式,您將有以上這些行中的一行。範例:
configutil -o local.sso.ida.verifyurl -v \ "http://siroe.com:8080/VerifySSO?" |
變更配置後,重新啟動 Messenger Express http 伺服器。
cd instance_root./stop-msg http ./start-msg http |
為 Directory Server 配置 SSO。
在目錄中建立代理使用者帳號。
代理伺服器使用者帳號允許 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 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=cesta.com,o=isp LDAPDatabaseInterface-ldapauthpw=proxypassword NDAAuth-singleSignOnId=ssogrp1- NDAAuth-applicationId=ida |
resource.properties 檔案儲存於以下位置︰
iDA_svr_base/nda/classes/netscape/nda/servlet/
增加參加伺服器的驗證 URL。
若要驗證收到的單次登入 cookie,Delegated Administrator 必須瞭解要與誰聯絡。您必須為所有已知的參加伺服器提供驗證 URL。
以下範例假設 Messenger Express 已安裝,並且其應用程式 ID 為 msg5。編輯 Delegated Administrator 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? |
resource.properties 檔案位於以下目錄中︰
iDA_svr_base/nda/classes/netscape/nda/servlet/
增加 Delegated Administrator 單次登入 cookie 資訊並啟用 UTF8 參數編碼。
定義 Delegated Administrator 環境識別碼。
編輯 servlets.properties 檔案並取消註釋包含文字 servlet.*.context=ims50 的所有行。其中 * 為任意字串。
servlets.properties 檔案位於︰
Web_Svr_Base/https-instancename/config/
在 Enterprise Server 配置中指定環境的 cookie 名稱。
編輯 Enterprise Server contexts.properties 檔案並將以下行增加至檔案底部 (#IDACONF-Start 行之前)︰
context.ims50.sessionCookie=ssogrp1-ida
contexts.properties 檔案位於︰
Web_Svr_Base/https-instancename/config/
為 ims5 環境啟用 UTF8 參數編碼。
若要在 Enterprise Server 配置中為 ims5 環境啟用 UTF8 參數編碼,請將以下項目增加至 Enterprise Server contexts.properties 檔案︰
context.ims50.parameterEncoding=utf8
重新啟動 Messenger Express。
依照步驟 1a 至 2c 所述進行配置變更後,您必須重新啟動 Messenger Express 以使變更生效︰
Web_Svr_Base/https-instance_name/stop Web_Svr_Base/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 http |
您可以透過使用 configutil 指令,修改 Messenger Express 的單次登入配置參數,如Messenger Express 信任的 SSO 配置參數所示。如需有關 configutil 的更多資訊,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」
表 6–3 信任圈單次登入參數