Sun Java System Access Manager 7 2005Q4 管理指南

配置認證

本節描述如何配置您部署的認證。第一部分略述預設認證模組類型並提供任何所需的預先配置的指令。您可對範圍、使用者、角色等等配置相同認證模組類型的多重配置實例。此外,您可新增認證鏈接,如此於順利認證之前,認證必須通過多重實例的準則。本節包含:

認證模組類型

認證模組是一個收集使用者資訊 (如使用者 ID 和密碼) 並檢查資料庫中之項目資訊的外掛程式。若使用者提供符合認證準則的資訊,則將對使用者授予所請求資源的存取權。若使用者提供不符合認證準則的資訊,則將拒絕使用者所請求資源的存取權。Access Manager 安裝時附有 15 種認證模組類型。


備註 –

用作認證實例之前,某些認證模組類型需要進行預先配置。如需要,配置步驟將列於模組類型描述之中。


核心

依預設,Access Manager 提供十五種不同的認證模組,以及核心認證模組。核心認證模組為認證模組提供總體配置。加入及啟用 Active Directory、匿名、基於憑證的認證、HTTP Basic、JDBC、LDAP、任何認證模組之前,必須先加入和啟用核心認證。對預設範圍自動啟用核心和 LDAP 認證兩種模組。

按一下 [進階特性] 按鈕顯示可為範圍定義的核心認證屬性。全域屬性不適用於範圍,因此將不顯示。

Active Directory

Active Directory 認證模組執行認證的方式與 LDAP 模組相似,但使用的是 Microsoft 的 Active Directory™ 伺服器 (相對於 LDAP 認證模組使用的 Directory Server)。雖然可對 Active Directory 伺服器配置 LDAP 認證模組,但此模組可讓您在相同範圍下同時擁有 LDAP 和 Active Directory 兩種認證模組。


備註 –

在此版本中,Active Directory 認證模組僅支援使用者認證。只有 LDAP 認證模組會支援密碼策略。


匿名

依預設,啟用此模組時,使用者能以 anonymous 使用者的身份登入 Access Manager。藉由配置 [有效匿名使用者清單] 屬性,亦可對此模組定義一份匿名使用者清單。授與匿名存取權意味著無需提供密碼即可進行存取。可以將匿名存取權限制為特定類型的存取權 (例如,讀取存取權或搜尋存取權),或限制在目錄內的子樹或個別項目中。

憑證

基於憑證的認證需要使用個人數位憑證 (PDC) 來識別和認證使用者。可以將 PDC 配置為需要與儲存在 Directory Server 中的 PDC 相符,並要根據憑證廢止清單進行驗證。

在對範圍加入基於憑證的認證模組之前,需要完成許多工作。首先,需要確保與 Access Manager 一同安裝之 Web 容器的安全,並對其進行配置,以用於基於憑證的認證。於啟用基於憑證的模組之前,請參閱「Sun ONE Web Server 6.1 管理員指南」中的第 6 章「使用證書和金鑰」,以取得這些 Web Server 的初始配置步驟。此文件位於以下位置:

http://docs.sun.com/db/prod/s1websrv#hic

或者,參閱位於下列位置的「Sun ONE Application Server Administrator’s Guide to Security」:

http://docs.sun.com/db/prod/s1appsrv#hic


備註 –

每一位要使用基於憑證的模組進行認證的使用者,必須請求用於使用者瀏覽器的 PDC。根據所使用的瀏覽器不同,會有不同的說明。請參閱您瀏覽器的說明文件,以取得更多資訊。


為了加入此模組,您必須以範圍管理員的身份登入 Access Manager,並配置 Access Manager 和 Web 容器,以使用 SSL 並啟用用戶端認證。如需更多資訊,請參閱第 3 章, 在 SSL 模式中配置 Access Manager

HTTP Basic

此模組使用基本認證,它是 HTTP 通訊協定內建的認證支援。Web 伺服器發出要求提供使用者名稱和密碼的用戶端請求,並將這些資訊作為授權請求的一部分傳回伺服器。會擷取該使用者名稱和密碼,從內部將使用者認證至 LDAP 認證模組。為使 HTTP Basic 正常工作,必須加入 LDAP 認證模組 (僅加入 HTTP Basic 模組將不起作用)。一旦使用者認證成功,其無需提供使用者名稱和密碼即可重新進行認證。

JDBC

Java Database Connectivity (JDBC) 認證模組提供一種機制,可讓 Access Manager 經由提供 JDBC 技術啟用驅動程式的 SQL 資料庫來認證使用者。與 SQL 資料庫的連線可以直接經由 JDBC 驅動程式或 JNDI 連線池。


備註 –

此模組已在 MySQL4.0 和 Oracle 8i 上通過測試。


LDAP

如果使用 LDAP 認證模組,當使用者登入時,他或她必須以特定的使用者 DN 和密碼連結至 LDAP Directory Server。此為所有基於範圍的認證之預設認證模組。若使用者提供 Directory Server 中的使用者 ID 和密碼,系統將允許此使用者存取有效的 Access Manager 階段作業,並使用該階段作業進行設定。對預設範圍自動啟用核心和 LDAP 認證兩種模組。

成員身份

成員身份認證的實施類似於個人網站,例如:my.site.commysun.sun.com。啟用此模組時,使用者無需借助管理員,即可建立帳號並將其作為個人帳號。對於這個新帳號,使用者能以已加入使用者的身份來存取它。還可以存取檢視器介面,此介面作為授權資料和使用者偏好設定儲存在使用者設定檔資料庫中。

MSISDN

Mobile Station Integrated Services Digital Network (MSISDN) 認證模組會使用如行動電話等裝置相關的行動用戶 ISDN 來啟用認證。這是非互動式模組。此模組擷取用戶 ISDN 並利用 Directory Server 進行驗證,以找到符合該號碼的使用者。

RADIUS

Access Manager 可以配置為搭配已安裝的 RADIUS 伺服器使用。如果您的企業使用老舊的 RADIUS 伺服器進行認證,這會很有用。啟用 RADIUS 認證模組需要執行兩個步驟:

  1. 配置 RADIUS 伺服器。

    如需詳細指示,請參閱 RADIUS 伺服器的文件。

  2. 註冊和啟用 RADIUS 認證模組。

與 Sun Java System Application Server 一起配置 RADIUS

當 RADUIS 用戶端與其伺服器形成通訊端連線時,依預設,Application Server 的 server.policy 檔案中僅可有 SocketPermission 的連線權限。為了使 RADUIS 認證正常工作,需要為以下動作授與權限:

若要授予通訊端連線的權限,您必須在應用程式伺服器的 server.policy 檔案中加入一個項目。SocketPermission 由主機規格和一組指定與該主機連線方式的動作組成。主機依如下指令指定:

host = hostname | IPaddress:portrange:portrange = portnumber 

| -portnumberportnumber-portnumber

主機表示為 DNS 名稱、數字 IP 位址或本端主機 (針對本端機器)。DNS 名稱主機規格中可使用一次萬用字元「*」。如果包含萬用字元,它必須位於最左側,如:*.example.com

連接埠 (或連接埠範圍) 為選擇性的。形式為 N- 的連接埠規格 (其中 N 為連接埠埠號),表示號碼為 N 及大於 N 的所有連接埠。形式為 -N 的連接埠規格則表示號碼為 N 及小於 N 的所有連接埠。

偵聽動作僅在與本端主機搭配使用時才有意義。如果存在任何其他動作,則暗含解析 (解析主機/IP 名稱服務查找) 動作。

例如,建立 SocketPermission 時請注意,如果將以下權限授與某程式碼,則該權限可讓程式碼與 machine1.example.com 上的 port 1645 連線,並接受該連接埠上的連線:

permission java.net.SocketPermission machine1.example.com:1645, "connect,accept";

同樣,如果將以下權限授與某程式碼,則該權限可讓程式碼接受本端主機上 1024 至 65535 之間任一連接埠上的連線、與這些連接埠連線或偵聽這些連接埠:

permission java.net.SocketPermission "machine1.example.com:1645", "connect,accept";

permission java.net.SocketPermission "localhost:1024-", "accept,connect,listen";

備註 –

因為有害的程式碼可以更容易在不擁有資料的存取權的多方中傳輸和共用這些資料,所以將接受或建立與遠端主機連線的權限授與程式碼可能會引發問題。請確保透過指定精確的連接埠號 (而不是指定連接埠號範圍) 僅授與適當的權限。


SafeWord

可配置 Access Manager 以處理對安全運算的 SafeWord™ 或 SafeWord PremierAccess™ 認證伺服器的 SafeWord 認證請求。Access Manager 會提供 SafeWord 認證的用戶端。SafeWord 伺服器可以存在於安裝有 Access Manager 的系統,或是單獨的系統上。

與 Sun Java System Application Server 一起配置 SafeWord

SafeWord 用戶端與其伺服器形成通訊端連線時,依預設,應用程式伺服器的 server.policy 檔案中,只允許有 SocketPermission 的連線權限。為了使 SafeWord 認證正常工作,需要為以下動作授與權限:

若要授予通訊端連線的權限,您必須在應用程式伺服器的 server.policy 檔案中加入一個項目。SocketPermission 由主機規格和一組指定與該主機連線方式的動作組成。主機依如下指令指定:

host = (hostname | IPaddress)[:portrange] portrange = 

portnumber | -portnumberportnumber-[portnumber]

主機表示為 DNS 名稱、數字 IP 位址或本端主機 (針對本端機器)。DNS 名稱主機規格中可使用一次萬用字元「*」。如果包含萬用字元,它必須位於最左側,如:*.example.com

連接埠 (或 portrange) 為選擇性的。形式為 N- 的連接埠規格 (其中 N 為連接埠埠號),表示號碼為 N 及大於 N 的所有連接埠。形式為 -N 的連接埠規格則表示號碼為 N 及小於 N 的所有連接埠。

偵聽動作僅在與本端主機搭配使用時才有意義。如果存在任何其他動作,則暗含解析 (解析主機/IP 名稱服務查找) 動作。

例如,建立 SocketPermission 時請注意,如果將以下權限授與某程式碼,則該權限可讓程式碼與 machine1.example.com 上的 port 1645 連線,並接受該連接埠上的連線:

permission java.net.SocketPermission machine1.example.com:5030, "connect,accept";

同樣,如果將以下權限授與某程式碼,則該權限可讓程式碼接受本端主機上 1024 至 65535 之間任一連接埠上的連線、與這些連接埠連線或偵聽這些連接埠:

permission java.net.SocketPermission "machine1.example.com:5030", "connect,accept";

permission java.net.SocketPermission "localhost:1024-", "accept,connect,listen";

備註 –

因為有害的程式碼可以更容易在不擁有資料的存取權的多方中傳輸和共用這些資料,所以將接受或建立與遠端主機連線的權限授與程式碼可能會引發問題。請確保透過指定精確的連接埠號 (而不是指定連接埠號範圍) 僅授與適當的權限。


SAML

安全指定標記語言 (SAML) 認證模組擷取並驗證目標伺服器上的 SAML 指定。只有在此模組是配置於目標機器上時 (包括升級後,例如:Access Manager 2005Q1 升級至 Access Manager 2005Q4),SAML SSO 才有作用。

SecurID

Access Manager 可以配置為能處理對 RSA 的 ACE/Server 認證伺服器提出之「SecurID 認證」請求。Access Manager 會提供 SecurID 認證的用戶端。ACE/Server 可以存在於安裝有 Access Manager 的系統,或是單獨的系統上。若要對在本機管理的使用者 ID 進行認證 (請參閱 admintool (1M)),需要超級使用者存取權限。

「SecurID 認證」使用認證輔助程式 amsecuridd,它是 Access Manager 主程序以外的單獨程序。此輔助程式會在啟動時偵聽某連接埠,以取得配置資訊。如果安裝了 Access Manager 並以 nobody 身份或非超級使用者的使用者 ID 執行,必須仍以超級使用者身份執行 AccessManager-base/SUNWam/share/bin/amsecuridd 程序。如需 amsecuridd 輔助程式的詳細資訊,請參閱第 20 章, amsecuridd 輔助程式


備註 –

在此版本的 Access Manager 中,「SecurID 認證」模組不適用於 Linux 或 Solaris x86 平台,且不應在這兩個平台上註冊、配置或啟用。它僅適用於 SPARC 系統。


UNIX

Access Manager 可以配置為根據安裝有 Access Manager 的 Solaris 或 Linux 系統上已知的 Unix 使用者 ID 和密碼,處理認證請求。雖然僅有一個範圍屬性和幾個用於 Unix 認證的全域屬性,但仍有一些針對系統的考量。若要對本機管理的使用者 ID 進行認證 (請參閱 admintool (1M)),則需要超級使用者存取權限。

「Unix 認證」使用認證 輔助程式 amunixd,它是 Access Manager 主程序以外的單獨程序。此輔助程式會在啟動時偵聽某連接埠,以取得配置資訊。每個 Access Manager 只有一個 Unix 輔助程式以供其所有範圍使用。

如果安裝了 Access Manager 並以 nobody 身份或非超級使用者的使用者 ID 執行,必須仍以超級使用者身份執行 AccessManager-base/SUNWam/share/bin/amunixd 程序。Unix 認證模組透過開啟 localhost:58946 的通訊端來呼叫 amunixd 常駐程式,以偵聽 Unix 認證請求。若要在預設連接埠上執行 amunixd 輔助程式程序,請輸入以下指令:

./amunixd

若要在非預設連接埠上執行 amunixd,請輸入下列指令:

./amunixd [-c portnm] [ipaddress]

IP 位址與連接埠埠號位於 AMConfig.propertiesUnixHelper.ipadrs 屬性 (IPV4 格式) 和 UnixHelper.port 屬性中。您可透過 amserver 指令行公用程式執行 amunixd (amserver 會自動執行此程序,並從 AMConfig.properties 擷取連接埠號和 IP 位址)。

/etc/nsswitch.conf 檔案中的 passwd 項目會決定是參考 /etc/passwd/etc/shadow 檔案,還是參考 NIS 來進行認證。

Windows Desktop SSO

「Windows Desktop SSO 認證」模組是基於 Kerberos 的認證外掛程式模組,用於 Windows 2000™。它可讓通過 Kerberos 配送中心 (Kerberos Distribution Center;KDC) 認證的使用者,毋需再次提交登入條件便可通過 Access Manager 的認證 (單次登入)。

使用者透過 SPNEGO (Simple and Protected GSS-API Negotiation Mechanism) 通訊協定向 Access Manager 提出 Kerberos。為了經由此認證模組來執行基於 Kerberos 的單次登入 Access Manager,在用戶端的使用者必須支援 SPNEGO 通訊協定,才能自我認證。通常,任何支援此通訊協定的使用者應該都能使用這個模組對 Access Manager 進行認證。視用戶端記號的可用性而定,此模組會提供 SPENGO 記號或 Kerberos 記號 (不論那一個,通訊協定都相同)。於 Windows 2000 (或更新版本) 上執行的 Microsoft Internet Explorer (5.01 或更新版本) 目前支援此通訊協定。此外,Solaris (9 和 10) 上的 Mozilla 1.4 具有 SPNEGO 支援,但只會傳回 KERBEROS 記號,因為 Solaris 不支援 SPNEGO。


備註 –

您必須使用 JDK 1.4 或更新版本,才能利用 Kerberos V5 認證模組的新功能和 Java GSS API,在此 SPNEGO 模組中執行基於 Kerberos 的 SSO。


使用的已知限制

若在 WindowsDesktopSSO 認證時使用的是 Microsoft Internet Explorer 6.x,且瀏覽器不具使用者的 Kerberos/SPNEGO 記號 (符合 WindowsDesktopSSO 模組中配置的 (KDC) 範圍) 之存取權,則在瀏覽器對 WindowsDesktopSSO 模組的認證失敗後,瀏覽器對其他模組的運作也會不正確。導致此問題的直接原因在於當 Internet Explorer 無法執行 WindowsDesktopSSO 模組時,即使出現回呼的提示,瀏覽器也無法將回呼 (屬於其他模組) 傳遞至 Access Manager,除非瀏覽器重新啟動。由於 Null 使用者憑證,因此 WindowsDesktopSSO 之後的所有模組都將失敗。

請參閱下列文件以取得相關資訊:

http://support.microsoft.com/default.aspx?scid=kb;en-us;308074

http://www.wedgetail.com/jcsi/sso/doc/guide/troubleshooting.html#ieNTLM

配置 Windows Desktop SSO

啟用 Windows Desktop SSO 認證是一個具有兩個步驟的程序:

  1. 在 Windows 2000 網域控制器中建立一個使用者

  2. 設定 Internet Explorer。

Procedure要在 Windows 2000 網域控制器中建立一個使用者

步驟
  1. 在網域控制器中,建立針對 [Access Manager 認證] 模組的使用者帳號。

    1. 從 [開始] 功能表移至 [程式集] > [管理工具]。

    2. 選取 [使用者與電腦]。

    3. 建立含 Access Manager 主機名稱的新使用者,以作為使用者 ID (登入名稱)。Access Manager 主機名稱不應包含網域名稱。

  2. 將使用者帳號與服務提供者名稱產生關聯,並將 keytab 檔案匯出至安裝了 Access Manager 的系統。若要進行上述動作,請執行下列指令:


    ktpass -princ host/hostname.domainname@DCDOMAIN -pass password -mapuser userName-out 
    
    hostname.host.keytab
    
    ktpass -princ HTTP/hostname.domainname@DCDOMAIN -pass 
    
    password -mapuser userName-out hostname
    
    .HTTP.keytab

    ktpass 指令接受下列參數:

    hostname。執行 Access Manager 的主機名稱 (不含網域名稱)。

    domainname。Access Manager 網域名稱。

    DCDOMAIN。網域控制器的網域名稱。此名稱可能與 Access Manager 的網域名稱不同。

    password。使用者帳號的密碼。請確定密碼正確,因為 ktpass 不會驗證密碼。

    userName。使用者帳號 ID。它應該與 hostname 相同。


    備註 –

    請確保兩個 keytab 檔案均已做好安全措施。


    服務範本值應類似於以下範例:

    服務主體: HTTP/machine1.EXAMPLE.COM@ISQA.EXAMPLE.COM

    Keytab 檔案名稱:/tmp/machine1.HTTP.keytab

    Kerberos 範圍: ISQA.EXAMPLE.COM

    Kerberos 伺服器名稱:machine2.EXAMPLE.com

    使用網域名稱傳回主體:false

    認證層級: 22

  3. 重新啟動伺服器。

Procedure設定 Internet Explorer

上述步驟適用於 Microsoft Internet Explorer™ 6 及更高版本。若您是使用較早的版本,請確定 Access Manager 在瀏覽器的網際網路區域內,並啟用 Windows 原有的認證 (Native Windows Authentication)。

步驟
  1. 在 [工具] 功能表中,移至 [網際網路選項] > [進階/安全性] > [安全性]。

  2. 選取 [整合 Windows 認證] 選項。

  3. 移至 [安全性] > [本機網際網路]。

    1. 選取 [自訂層級]。在 [使用者認證/登入] 面板中,選取 [僅於內部網路域內自動登入] 選項。

    2. 前往 [網站] 並選取所有選項。

    3. 按一下 [進階] ,並將 Access Manager 加入至本機區域 (若尚未加入的話)。

Windows NT

Access Manager 可以配置為搭配已安裝的 Windows NT /Windows 2000 伺服器使用。Access Manager 會提供 NT 認證的用戶端。

  1. 配置 NT 伺服器。如需詳細說明,請參閱 Windows NT 伺服器的文件。

  2. 加入和啟用 Windows NT 認證模組之前,您必須先取得和安裝 Samba 用戶端,以便與 Solaris 系統上的 Access Manager 進行通訊。

安裝 Samba Client

為啟用 Windows NT 認證模組,Samba Client2.2.2 必須下載並安裝於下列目錄中:

AccessManager-base/SUNWam/bin

Samba Client 是一種檔案與列印伺服器,用於不需要單獨的 Windows NT/2000 Server 而將 Windows 和 UNIX 機器結合在一起。如需更多資訊及下載,請於以下位置存取:http://wwws.sun.com/software/download/products/3e3af224.html。

Red Hat Linux 隨附 Samba 用戶端,其所在目錄如下:

/usr/bin

若要使用 Linux 的 Windows NT 認證模組,請將用戶端二進位複製到下列 Access Manager 目錄中:

AccessManager-base/sun/identity/bin

備註 –

如果您有多個介面,則需要額外的配置。多重介面可以透過 smb.conf 檔案中的配置設定,以傳遞到 mbclient


認證模組實例

根據預設認證模組,可為範圍建立多重認證模組實例。您可個別地新增相同認證模組之已配置的多重實例。

Procedure建立新的認證模組實例

步驟
  1. 按一下您要新增認證模組實例的範圍名稱。

  2. 選取 [認證] 標籤。


    備註 –

    [管理員認證配置] 按鈕僅定義管理員的認證服務。若管理員的認證模組必須與一般使用者的認證模組不同,則可以使用此屬性。配置於此屬性中的模組將在存取 Access Manager 主控台時被挑選出來。


  3. 按一下 [模組實例] 清單中的 [新建]。

  4. 輸入認證模組實例的名稱。該名稱必須是唯一的。

  5. 選取範圍之認證模組類型的 [類型]。

  6. 按一下 [建立]。

  7. 按一下剛建立的模組實例名稱並編輯該模組的特性。請參閱線上說明中的「認證」一節,以取得每個模組類型特性的定義。

  8. 重複這些步驟以新增多重模組實例。

認證鏈接

可以配置一個以上的認證模組,因此使用者必需傳送認證憑證給其全體。這稱為認證鏈接。Access Manager 中的認證鏈接可使用整合於認證服務中的 JAAS 框架來達成。模組鏈結配置於認證配置服務底下。

Procedure建立新的認證鏈接

步驟
  1. 按一下您要新增認證鏈接的範圍名稱。

  2. 選取 [認證] 標籤。

  3. 按一下 [認證鏈接] 清單中的 [新建]。

  4. 輸入此認證鏈接的名稱。

  5. 按一下 [建立]。

  6. 按一下 [新增] 以定義您要包括於鏈接中的認證模組實例。若要這麼做,請由實例清單中選取模組實例名稱。顯示於此清單中的模組實例名稱是在模組實例屬性中所建立的。

  7. 選取鏈接的條件。這些旗標為定義這些旗標的認證模組建立實施準則。此實施具有階層結構。[必要的] 為最高階層而 [可選的] 為最低階層:

    必要條件

    模組實例必須成功。若成功,認證將繼續進行至 [認證鏈接] 清單中的下一個選項。如果失敗,控制立即返回應用程式 (認證將不會繼續 [認證鏈接] 清單中的下一個選項)。

    必要的

    此模組的認證過程必須成功。若鏈接中任何一個必要模組失敗了,則整個認證鏈接將完全失敗。然而,無論必要模組成功與否,控制將繼續進行至鏈接中的下一個模組。

    充足的

    模組實例不必要成功。若其確實成功,控制將立即返回應用程式 (認證將不進行至模組實例清單的下一個選項)。若失敗,認證將繼續進行至 [認證鏈接] 清單中的下一個選項。

    可選的

    模組實例不必要成功。無論成功或失敗,認證都將繼續進行至 [認證鏈接] 清單中的下一個選項。

  8. 輸入鏈接的選項。允許此模組使用的其他選項,格式為鍵=值對。多重選項由空格分隔。

  9. 定義下列屬性:

    成功登入 URL

    指定使用者認證成功後將重新導向至的 URL。

    登入失敗 URL

    指定使用者認證失敗後將重新導向至的 URL。

    認證後處理類別

    定義於登入成功或失敗後用來自訂認證後處理的 Java 類別名稱。

  10. 按一下 [儲存]。