Sun Java logo     上一個      目錄      索引      下一個     

Sun logo
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 配置參數。

表 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 配置為使用其他 cookie 名稱,則需要在 Messaging Server 中將該名稱配置為 local.webmail.sso.amcookiename,以便進行單次登入時 Messaging Server 知道要查找的內容。預設值為 iPlanetDirectoryPro,如果 Access Manager 具有預設配置,則不能變更此預設值。

預設: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 時的動作。

預設:yes

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 之前,您必須首先考量哪些應用程式將位於此信任圈中。可處於此信任圈中的應用程式包含 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

委託管理員

Calendar Express

SSO

SSO

SSO

SSO

Messenger Express

SSO

不適用

不適用

SSO

Messenger Express Multiplexor

SSO

不適用

不適用

SSO

委託管理員

SSO

SSO

SSO

不適用

信任圈 SSO 限制

信任圈 SSO 部署方案範例

最簡單的 SSO 部署方案僅包含 Messenger Express 和 iPlanet Delegated Administrator for Messaging。較複雜的方案可透過在相同機器或不同機器上,新增使用同一 SSO 字首 (以便它們位於同一信任圈中) 的 Calendar Express 來建立。如圖 6-1 中所示。

圖 6-1  簡單的 SSO 部署

本圖顯示一個簡單的 SSO 部署:單一 SSO 字首下有三個應用程式。

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

圖 6-2  複雜的 SSO 部署

本圖顯示包含七個伺服器應用程式的複雜 SSO 部署。

設定信任圈 SSO

本節描述如何為 Messenger Express、iPlanet Delegated Administrator for Messaging 和 Calendar Manager 設定 SSO。

  1. 為 SSO 配置 Messenger Express。
    1. 設定適當的 SSO configutil 參數。
    2. 若要為具有 Delegated Administrator 的 Messenger Express 啟用單次登入,請如下設定配置參數 (假設您的預設網域為 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?"

    3. 變更配置後,重新啟動 Messenger Express HTTP 伺服器。
    4. cd instance_root
      ./stop-msg http
      ./start-msg http

  2. 為 SSO 配置 Directory Server。
    1. 在目錄中建立代理使用者帳號。
    2. 代理使用者帳號可讓 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

    3. 為代理使用者帳號認證建立適當的 ACI。
    4. 使用 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 檔案。
    2. 在 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

    3. 新增參加伺服器的驗證 URL。
    4. 若要驗證收到的單次登入 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?

  4. 新增 Delegated Administrator 單次登入 cookie 資訊並啟用 UTF8 參數編碼。
    1. 為 Delegated Administrator 定義環境識別碼。
    2. 編輯 Web_Server_Root/https-instancename/config/servlets.properties,取消註釋所有包含文字 servlet.*.context=ims50 的行。其中,* 為任一字串。

    3. 在 Enterprise Server 配置中指定環境的 cookie 名稱。
    4. 編輯 Enterprise Server 檔案 Web_Server_Root/https-instancename/config/contexts.properties,將以下行新增至檔案的底部,#IDACONF-Start 行之前:

      context.ims50.sessionCookie=ssogrp1-ida

    5. ims5 環境啟用 UTF8 參數編碼。
    6. 若要為 Enterprise Server 配置中的 ims5 環境啟用 UTF8 參數編碼,請將以下項目新增至 Enterprise Server 的 WebServer_Root/https-instancename/config/contexts.properties 檔案:

      context.ims50.parameterEncoding=utf8

  5. 重新啟動 Messenger Express。
  6. 按照步驟 1a 至 2c 所述進行配置變更後,您必須重新啟動 Messenger Express 以使變更生效:

    WebServer_Root/https-iinstance_name/stop
    WebServer_Root/https-instancename/start

  7. 如果您要在此 SSO 群組中部署行事曆,請配置 Calendar Server。
  8. 編輯 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?

  9. 重新啟動 Calendar Server
  10. start-cal

  11. 重新啟動 Messenger Express HTTP 伺服器:
  12. msg_svr_base/sbin/stop-msg http
    msg_svr_base/sbin/start-msg http

Messenger 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 的預設 appidnda45。其實際值由 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。

預設值為零。



上一個      目錄      索引      下一個     


Copyright 2005 Sun Microsystems, Inc. 版權所有。