Sun Java System Messaging Server 6 2005Q4 管理指南

第 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.enablelocal.webmail.sso.enable 應保持 off 或未設定狀態;否則,將記錄警告訊息,表示缺少啟用舊 SSO 機制所需的配置參數。


您可以透過使用 configutil 指令修改 SSO 配置參數,如表 6–3 中所示。

表 6–1 Access Manager 單次登入參數

參數 

說明 

local.webmail.sso.amnamingurl

Access Manager 執行命名服務的 URL。用於透過 Access Manager 單次登入的強制變數。通常此 URL 為 http://server/amserver/namingservice

預設:未設定。 

local.webmail.sso.amcookiename

Access Manager cookie 名稱。依預設,Access Manager 在名為 iPlanetDirectoryPro 的 cookie 中儲存其階段作業控點。如果配置使用其他 cookie 名稱,則該名稱需要在 Messaging Server 中做為此參數進行配置,以便 Messaging Server 瞭解執行單次登入時要查詢的內容。如果 IS 具有預設配置,則不得變更預設值。

預設:iPlanetDirectoryPro

local.webmail.sso.amloglevel

AMSDK 記錄層級。Messaging Server 使用的 SSO 程式庫有其自己的記錄機制,與 Messaging Server 中的機制不同。此程式庫的訊息記錄在 msg_svr_base/log 下名為 http_sso 的檔案中。依預設,僅記錄 info 或更高級別的訊息,但可以透過將記錄級別設定為 1 至 5 (1 = errors、2 = warnings、3 = info、4 = debug、5 = maxdebug) 之間的值,來提高記錄級別。請注意,該程式庫與 Messaging Server 的訊息重要性概念不同,且將級別設定為 debug 會導致產生大量無意義的資料。另外,http_sso 記錄檔不由一般 Messaging Server 記錄代碼管理,且永遠不會被清除或自動重建。當設定的記錄層級高於預設層級時,系統管理員應負責清除此記錄檔。

預設:3 

local.webmail.sso.singlesignoff

從 Messaging Server 單次登出至 Access Manager。Access Manager 是中央認證機構,且單次登出總是從 Access Manager 啟用至 Messaging Server。此選項可讓網站配置 Webmail 中的 [登出] 按鈕是否還讓使用者登出 Access Manager (同時儲存某些自訂工作)。依預設,此選項已啟用。如果此選項已停用,則登出預設 Webmail 用戶端的使用者將自動登回,因為只要 Access Manager cookie 存在並有效,登出就將參考根文件,而根文件將參考收件匣顯示。因此,選擇停用此選項的網站需要自訂登出 Webmail 時的動作。

預設:是 

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 Manager SSO 中並不可用。本節包含以下小節:

信任圈 SSO 簡介和定義

部署 SSO 之前,請務必瞭解以下術語。

信任圈 SSO 應用程式

實作 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 部署方案僅由 Messenger Express 和 Delegated Administrator 組成。可以透過在相同機器或不同機器上,使用同一 SSO 前綴 (以便它們位於同一信任圈中) 增加 Calendar Express 來建立較複雜的方案。如圖 6–1 所示。

圖 6–1 簡單的 SSO 部署

本圖顯示了簡易的 SSO 部署。

更複雜的部署將包括 Messenger Express Multiplexor 和負載平衡器。

圖 6–2 複雜的 SSO 部署

本圖顯示了複雜的 SSO 部署。

設定信任圈 SSO

本小節說明為 Messenger Express、Delegated Administrator 和 Calendar Manager 設定 SSO。

Procedure為 Messenger Express、Delegated Administrator 和 Calendar Manager 設定 SSO

步驟
  1. 針對 SSO 配置 Messenger Express。

    1. 設定適當的 SSO configutil 參數。

      若要啟用 Messenger Express 和 Delegated Administrator 單次登入,請如下設定配置參數 (假設預設網域為 siroe.com)。這些參數在表 6–3 中進行說明。您必須是超級使用者。cdinstance_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?"
      
    2. 變更配置後,重新啟動 Messenger Express http 伺服器。


      cd instance_root./stop-msg http
      ./start-msg http
      
  2. 為 Directory Server 配置 SSO。

    1. 在目錄中建立代理使用者帳號。

      代理伺服器使用者帳號允許 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
    2. 為代理使用者帳號認證建立適當的 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
      
  3. 配置 Delegated Administrator

    1. 將代理伺服器使用者憑證和環境 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/

    2. 增加參加伺服器的驗證 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/

  4. 增加 Delegated Administrator 單次登入 cookie 資訊並啟用 UTF8 參數編碼。

    1. 定義 Delegated Administrator 環境識別碼。

      編輯 servlets.properties 檔案並取消註釋包含文字 servlet.*.context=ims50 的所有行。其中 * 為任意字串。

      servlets.properties 檔案位於︰

      Web_Svr_Base/https-instancename/config/

    2. 在 Enterprise Server 配置中指定環境的 cookie 名稱。

      編輯 Enterprise Server contexts.properties 檔案並將以下行增加至檔案底部 (#IDACONF-Start 行之前)︰

      context.ims50.sessionCookie=ssogrp1-ida

      contexts.properties 檔案位於︰

      Web_Svr_Base/https-instancename/config/

    3. ims5 環境啟用 UTF8 參數編碼。

      若要在 Enterprise Server 配置中為 ims5 環境啟用 UTF8 參數編碼,請將以下項目增加至 Enterprise Server contexts.properties 檔案︰

      context.ims50.parameterEncoding=utf8

  5. 重新啟動 Messenger Express。

    依照步驟 1a 至 2c 所述進行配置變更後,您必須重新啟動 Messenger Express 以使變更生效︰


    Web_Svr_Base/https-instance_name/stop
    Web_Svr_Base/https-instancename/start
    
  6. 如果您要在此 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?
  7. 重新啟動 Calendar Server

    start-cal

  8. 重新啟動 Messenger Express http 伺服器:


    msg_svr_base/sbin/stop-msg http
    msg_svr_base/sbin/start-msg http
    

Messenger Express 信任的 SSO 配置參數

您可以透過使用 configutil 指令,修改 Messenger Express 的單次登入配置參數,如Messenger Express 信任的 SSO 配置參數所示。如需有關 configutil 的更多資訊,請參閱「Sun Java System Messaging Server 6 2005Q4 Administration Reference」

表 6–3 信任圈單次登入參數

參數 

說明 

local.sso.appid .verifyurl

為同級 SSO 應用程式設定驗證 URL 值。appid 是同級 SSO 應用程式 (執行 SSO cookie) 的應用程式 ID。例如,Delegated Administrator 的預設 appidnda45。其實際值由 Delegated Administrator resource.properties 檔案項目 NDAAuth-applicationID 指定。

應為每個信任的同層 SSO 應用程式定義一個參數。驗證 URL 的標準格式為: 

http://nda-host:port /VerifySSO?

如果您在多個 Messenger Express Multiplexors 和 Message Store 伺服器 (執行 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 值。預設值為空。 

這是任意字串。其值必須與在 resource.properties 檔案中為 Delegated Administrator 指定的值相符。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 功能。 

預設值為空。 

此字串必須與在 resource.properties 檔案中 Delegated Administrator 使用的內容相符 (沒有尾隨 -)。例如,如果:

NDAAuth-singleSignOnID=ssogrp1-

則應在此處將該值設定為 ssogrp1


local.webmail.sso.
singlesignoff

如果將此參數的整數值設定為非零值,當用戶端登出時將清除用戶端其前綴值與 webmail.sso.prefix 中配置的值相符的所有 SSO cookie。 

如果設定為零,則當用戶端登出時,Messenger Express 將清除自己的 SSO cookie。 

預設值為零。