Java 鑑別和授權服務的系統登入配置項目設定

請利用這個頁面來指定一份 Java™ 鑑別和授權服務 (JAAS) 系統登入配置清單。

若要檢視這個管理主控台頁面,請完成下列步驟:
  1. 按一下安全 > 廣域安全
  2. 在「鑑別」之下,按一下 Java 鑑別和授權服務 > 系統登入
在開始定義其他登入模組來進行應用程式伺服器安全執行時期的鑑別之前,請先閱讀「Java 鑑別和授權服務」文件。 請勿移除下列系統登入模組:
ICSF [z/OS]

當利用整合加密服務機能 (ICSF) 來作為鑑別機制時,處理登入要求。

RMI_INBOUND、WEB_INBOUND、DEFAULT

處理遠端方法呼叫 (RMI)、Web 應用程式和大部分其他登入通訊協定的入埠登入要求。

RMI_INBOUND
這個登入配置會處理入埠 RMI 要求的登入。 這些登入通常是 Enterprise JavaBeans™ (EJB) 檔的鑑別存取要求。 當使用 RMI 連接器時,這些登入可能是對於 Java管理延伸 (JMX) 的要求。
WEB_INBOUND
這個登入配置會處理 Web 應用程式要求的登入,其中包括 Servlet 和 JavaServer Pages (JSP) 檔。 如果配置了信任關聯攔截程式 (TAI) 所產生的輸出,這個登入配置可以與這個輸出互動。 傳給 WEB_INBOUND 登入配置的主題可能包含 TAI 所產生的物件。
DEFAULT
這個登入配置會處理大部分其他通訊協定和內部鑑別所發出之入埠要求的登入。

這三項登入配置都會傳入這些配置內的登入模組所處理的下列回呼資訊。 這些回呼不會同時傳入。不過,這些回呼的組合決定了應用程式伺服器將如何鑑別使用者。

回呼

callbacks[0] = new javax.security.auth.callback.
NameCallback("Username: ");

責任
收集登入期間所提供的使用者名稱。這項資訊可能是下列登入類型的使用者名稱:
  • 使用者名稱和密碼登入,稱為基本鑑別
  • 使用者名稱只供身分確認使用。
回呼

callbacks[1] = new javax.security.auth.callback.
PasswordCallback("Password: ", false);

責任
收集登入期間所提供的密碼。
回呼

callbacks[2] = new com.ibm.websphere.security.auth.callback.
WSCredTokenCallbackImpl("Credential Token: ");

責任
在登入期間收集小型認證機構 (LTPA) 記號或其他記號類型。 當使用者名稱和密碼不存在時,這項資訊通常存在。
回呼

callbacks[3] = new com.ibm.wsspi.security.auth.callback.
WSTokenHolderCallback("Authz Token List: ");

責任
收集 WSOpaqueTokenHelper 呼叫所傳回之 TokenHolder 物件的 ArrayList 清單。 回呼會以 Common Secure Interoperability 第 2 版 (CSIv2) 授權記號為輸入來使用 createTokenHolderListFromOpaqueToken 方法。
限制: 只有在啟用了傳送安全屬性選項,且這項登入是一項傳送登入時,這個回呼才存在。 在傳送登入中,會隨著要求而傳送足夠的安全屬性,以免必須存取使用者登錄來取得其他屬性。您必須啟用出埠和入埠鑑別這兩者的傳送安全屬性。
您可以完成下列步驟來啟用 CSIv2 出埠鑑別的傳送安全屬性選項:
  1. 按一下安全 > 廣域安全
  2. 在「鑑別」之下,展開「RMI/IIOP 安全」,按一下 CSIv2 出埠鑑別
  3. 啟用傳送安全屬性選項。
您可以完成下列步驟來啟用 CSIv2 入埠鑑別的傳送安全屬性選項:
  1. 按一下安全 > 廣域安全
  2. 在「鑑別」之下,展開「RMI/IIOP 安全」,按一下 CSIv2 入埠鑑別
  3. 啟用傳送安全屬性選項。

在系統登入配置中,應用程式伺服器會根據回呼收集的資訊來鑑別使用者。 不過,自訂登入模組不需要處理任何這些回呼。 下列清單說明這些回呼的一般組合:

  • 只有 callbacks[0] = new javax.security.auth.callback.NameCallback("Username: "); 回呼

    CSIv2 身分主張、Web 和 CSIv2 X509 憑證登入、舊式信任關聯攔截程式登入等會進行這個回呼。 在 Web 和 CSIv2 X509 憑證登入中,應用程式伺服器會將憑證對映至使用者名稱。 任何只用使用者名稱來建立信任關係的登入類型都會使用這個回呼。

  • callbacks[0] = new javax.security.auth.callback.NameCallback("Username: "); 回呼和 callbacks[1] = new javax.security.auth.callback.PasswordCallback("Password: ", false); 回呼。

    這個回呼組合通常是供基本鑑別登入使用。大部分使用者鑑別都是用這兩個回呼來進行。

  • 只有 callbacks[2] = new com.ibm.websphere.security.auth.callback.WSCredTokenCallbackImpl("Credential Token: "); 回呼
    這個回呼用來驗證小型認證機構 (LTPA) 記號。這項驗證通常是在單一登入 (SSO) 或下游登入期間進行的。 每當要求是起源於應用程式伺服器而不是純用戶端時,都會將 LTPA 記號傳給目標伺服器。 如果是單一登入 (SSO),就會在 Cookie 中接收 LTPA 記號,且會用這個記號來登入。如果自訂登入模組需要 LTPA 記號提供使用者名稱,模組可以利用下列方法來擷取記號中的唯一 ID:

    com.ibm.wsspi.security.token.WSSecurityPropagationHelper.
    validateLTPAToken(byte[])

    擷取唯一 ID 之後,請利用下列方法來取得使用者名稱:

    com.ibm.wsspi.security.token.WSSecurityPropagationHelper.
    getUserFromUniqueID(uniqueID)

    重要: 每當自訂登入模組插在應用程式伺服器登入模組前面,且會利用認證對映服務來變更身分時,如果有 LTPA 記號的話,這個登入模組務必驗證 LTPA 記號,這一點很重要。 呼叫下列方法便足以驗證 LTPA 記號中的信任關係:

    com.ibm.wsspi.security.token.WSSecurityPropagationHelper.
    validateLTPAToken(byte[])

    接收端伺服器必須有傳送端伺服器的相同 LTPA 金鑰,這項驗證才能順利完成。 如果這個 LTPA 記號存在,但您沒有驗證它,可能會出現安全漏洞。
  • 先前所提及的任何回呼的組合,加上 callbacks[3] = new com.ibm.wsspi.security.auth.callback.WSTokenHolderCallback("Authz Token List: "); 回呼。
    這個回呼表示部分傳送的屬性已到達伺服器。 傳送的屬性仍需要下列鑑別方法之一:
    • callbacks[0] = new javax.security.auth.callback.
      NameCallback("Username: ");

    • callbacks[1] = new javax.security.auth.callback.
      PasswordCallback("Password: ", false);

    • callbacks[2] = new com.ibm.websphere.security.auth.callback.
      WSCredTokenCallbackImpl("Credential Token: ");

    如果從純用戶端將屬性加入 Subject 中,NameCallback 和 PasswordCallback 回呼會鑑別資訊,且記號保留區中所序列化的物件會加入鑑別的主題中。

    如果啟用了 CSIv2 身分確認和傳送,應用程式伺服器會利用 NameCallback 回呼和記號保留區(其中包含所有傳送的屬性)來將大部分物件解除序列化。 應用程式伺服器會使用 NameCallback 回呼,因為所建立的信任關係是關聯於您在 CSIv2 授信伺服器清單中指出的伺服器。 若要指定授信伺服器,請完成下列步驟:
    1. 按一下安全 > 廣域安全
    2. 在「鑑別」之下,按一下 CSIv2 入埠鑑別

    自訂登入模組需要處理自訂序列化。 如需相關資訊,請參閱資訊中心中的「傳送安全屬性」。

除了先前定義的回呼之外,WEB_INBOUND 登入配置只能包含下列其他回呼:
回呼

callbacks[4] = new com.ibm.websphere.security.auth.callback.
WSServletRequestCallback("HttpServletRequest: ");

責任
如果 HTTP Servlet 要求物件存在,便加以收集。 這個回呼使登入模組能夠從 HTTP 要求中擷取登入期間所用的資訊。
回呼

callbacks[5] = new com.ibm.websphere.security.auth.callback.
WSServletResponseCallback("HttpServletResponse: ");

責任
如果 HTTP Servlet 回應物件存在,便加以收集。 這個回呼可讓登入模組將資訊加入登入後的 HTTP 回應中。例如,登入模組也許會將 SingleSignonCookie Cookie 加入回應中。
回呼

callbacks[6] = new com.ibm.websphere.security.auth.callback.
WSAppContextCallback("ApplicationContextCallback: ");

責任
收集登入期間所用的 Web 應用程式環境定義。 這個回呼由雜湊表組成,若有提供,則其中含有應用程式名稱和重新導向的網址。
回呼

callbacks[7] = new WSRealmNameCallbackImpl("Realm Name: ", <default_realm>);

責任
收集登入資訊的網域範圍名稱。網域範圍資訊不一定會提供,如果沒有提供,則應假設是現行的網域範圍。
回呼

callbacks[8] = new WSX509CertificateChainCallback("X509Certificate[]: ");

責任
如果登入來源是 SSL 用戶端鑑別中的 X509Certificate,這項回呼含有 SSL 所驗證的憑證。ltpaLoginModule 會呼叫和舊版相同的對映函數。將它傳給登入之後,它會讓自訂登入模組有機會使用自訂方式來對映憑證。 之後,它會執行雜湊表登入(請參閱相關鏈結「入埠對映的自訂登入模組」,以取得雜湊表登入的範例)。
如果您要搭配 WEB_INBOUND 登入配置來使用傳送安全屬性,您可以在「單一登入」畫面中啟用傳送 Web 入埠安全屬性選項。
  1. 按一下安全 > 廣域安全
  2. 在「鑑別」之下,展開「Web 安全」,再按一下單一登入 (SSO)
  3. 選取 Web 入埠安全屬性傳送選項。
下列登入模組預先定義給 RMI_INBOUND、WEB_INBOUND 和 DEFAULT 系統登入配置。您可以在任何這些登入模組之前、之間或之後,新增自訂登入模組,但您無法移除這些預先定義的登入模組:
  • com.ibm.ws.security.server.lm.ltpaLoginModule
    不論是否啟用屬性傳送,都執行主要登入。 主要登入會使用一般鑑別資訊,如使用者 ID 和密碼、LTPA 記號,或信任關聯攔截程式 (TAI) 及憑證識別名稱 (DN)。 如果任何下列實務是真的,就不會使用這個登入模組,且 com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule 模組會執行主要登入:
    • Subject 中含有必要使用者屬性的 java.util.Hashtable 物件。
    • LoginContext 的 sharedState HashMap 中存在含必要使用者屬性的 java.util.Hashtable 物件。
    • WSTokenHolderCallback 回呼存在,但沒有指定的密碼。如果是隨著指出所傳送之資訊的 WSTokenHolderCallback 回呼而提供使用者名稱和密碼,要求可能是起源於純用戶端,也可能是起源於將現有身分對映至某個使用者 ID 和密碼的不同網域範圍中的伺服器。
  • com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule
    如果下列任一狀況屬實,這個登入模組會利用一般鑑別資訊來執行主要登入:
    • Subject 包含具有必要使用者屬性的 java.util.Hashtable 物件。
    • 在 LoginContext 環境定義的 sharedState HashMap 中,有包含必要使用者屬性的 java.util.Hashtable 物件。
    • WSTokenHolderCallback 回呼存在,但沒有 PasswordCallback 回呼。

    當 java.util.Hashtable 物件存在時,登入模組會將物件屬性對映至有效主題中。當 WSTokenHolderCallback 呼叫存在時,登入模組會將位元組記號物件解除序列化,且會重新產生已序列化的主題內容。 java.util.Hashtable 雜湊表的優先順序高於所有其他登入形式。 請小心避免複製或置換應用程式伺服器先前可能已傳送的項目。

    藉由將 java.util.Hashtable 雜湊表指定成優先順序高於其他鑑別資訊,如果有 LTPA 記號的話,自訂登入模組必須已驗證 LTPA 記號來建立足夠的信任關係。 自訂登入模組可以利用 com.ibm.wsspi.security.token.WSSecurityPropagationHelper.validationLTPAToken(byte[]) 方法來驗證 WSCredTokenCallback 回呼中所提供的 LTPA 記號。 失敗的 LTPA 記號的驗證,會帶來安全風險。

    如果需要新增含有應用程式伺服器所用的通行而形式完整的屬性之雜湊表的登入詳細資訊,請參閱資訊中心中的「配置入埠身分對映」。

RMI_OUTBOUND

當 com.ibm.CSI.rmiOutboundLoginEnabled 或 com.ibm.CSIOutboundPropagationEnabled 內容是 true,出埠送往其他伺服器的程序遠端方法呼叫 (RMI) 要求。

這些內容設定在 CSIv2 鑑別畫面中。若要存取畫面,請完成下列步驟:
  1. 按一下安全 > 廣域安全
  2. 在「鑑別」之下,展開「RMI/IIOP 安全」,按一下 CSIv2 出埠鑑別
若要設定 com.ibm.CSI.rmiOutboundLoginEnabled 內容,請選取自訂出埠對映。 若要設定 com.ibm.CSIOutboundPropagationEnabled 內容,請選取傳送安全屬性選項。

這個登入配置決定了目標伺服器及其安全網域的安全功能。比方說,如果應用程式伺服器 5.1.1 版或以上的版本(或 z/OS® 是 5.1.0.2 版)與 5.x 版應用程式伺服器通訊,5.1.1 版應用程式伺服器會利用 LTPA 記號,只將鑑別資訊傳給 5.x 版應用程式伺服器。 不過,如果 WebSphere® Application Server 5.1.1 版或更新的版本與 5.1.x 版應用程式伺服器通訊,且傳送端和接收端伺服器都啟用了傳送,就會將鑑別和授權資訊傳給接收端應用程式伺服器。 當應用程式伺服器往下游傳送鑑別和授權資訊時,應用程式伺服器會移除重新存取使用者登錄和查閱使用者安全屬性來進行授權的需求。 另外,傳送端伺服器所新增的任何自訂物件也都會出現在下游伺服器的主題中。

在 RMI_OUTBOUND 登入配置中,可以使用下列回呼。 您可以利用這個回呼傳回的 com.ibm.wsspi.security.csiv2.CSIv2PerformPolicy 物件來查詢這個特定出埠要求的安全原則。 這項查詢可協助您判斷目標網域範圍與目前的網域範圍是否不同,以及應用程式伺服器是否需要對映網域範圍。 如需相關資訊,請參閱資訊中心中的「配置指向不同目標網域範圍的出埠對映」。

回呼
callbacks[0] = new WSProtocolPolicyCallback("Protocol Policy Callback: ");
責任

在這個出埠呼叫上,提供特定通訊協定的原則資訊給登入模組。這項資訊用來判斷安全層次,其中包括目標網域範圍、目標安全基本需求,以及聯合的安全基本需求。

下列方法會從這個特定登入模組中取得 CSIv2PerformPolicy 原則:

csiv2PerformPolicy = (CSIv2PerformPolicy) ((WSProtocolPolicyCallback)callbacks[0]).getProtocolPolicy();

RMI 之外的不同通訊協定可能會有不同類型的原則物件。

下列登入模組預先定義在 RMI_OUTBOUND 登入配置中。您可以在任何這些登入模組之前、之間或之後,新增自訂登入模組,但您無法移除這些預先定義的登入模組。
com.ibm.ws.security.lm.wsMapCSIv2OutboundLoginModule
在建立利用 Common Secure Interoperability 第 2 版 (CSIv2) 授權記號層來傳給另一個伺服器的不透明位元組之前,擷取下列記號和物件:
  • 主題中可轉遞的 com.ibm.wsspi.security.token.Token 實作
  • 主題中可序列化的自訂物件
  • 執行緒中的傳送記號

您可以在這個登入模組之前,利用自訂登入模組來執行認證對映。 不過,建議您由登入模組來變更登入階段期間所傳入的主題內容。如果您遵循這項建議,便是在這個登入模組處理新的主題內容之後,再處理各個登入模組。

如需相關資訊,請參閱資訊中心中的「配置指向不同目標網域範圍的出埠對映」。

SWAM [AIX Solaris HP-UX Linux Windows] [iSeries]

當利用「簡易 WebSphere 鑑別機制」(SWAM) 作為鑑別方法時,在單一伺服器環境中處理登入要求。

SWAM 不支援可轉遞的認證。當鑑別方法是 SWAM 時,應用程式伺服器無法在伺服器之間傳送要求。 在這個情況下,您必須使用 LTPA。
註: SWAM 登入配置即將棄用,未來的版本會將它移除。
[z/OS] 註: 在應用程式伺服器 7.0 版中,SWAM 即將棄用,未來的版本會將它移除。
SWAM [z/OS]

這個登入配置可讓您將「輕量型目錄存取通訊協定 (LDAP)」使用者登錄中的 ID 對映至系統授權機能 (SAF) 使用者 ID。

[z/OS] 註: 在應用程式伺服器 7.0 版中,SWAM 即將棄用,未來的版本會將它移除。
wssecurity.IDAssertion

利用身分確認處理 Web 服務安全的登入配置要求。

這個登入配置適用於 5.x 版系統。 如需相關資訊,請參閱資訊中心的「身分確認鑑別方法」。

wssecurity.PKCS7

利用公開金鑰加密標準 #7 (PKCS7) 物件中的憑證廢止清冊,來驗證 X.509 憑證。

這個登入配置適用於 6.0.x 版系統。

wssecurity.PkiPath

利用公開金鑰基礎架構 (PKI) 路徑來驗證 X.509 憑證。

這個登入配置適用於 6.0.x 版系統。

wssecurity.signature

利用數位簽章驗證處理 Web 服務安全的登入配置要求。

這個登入配置適用於 5.x 版系統。

wssecurity.UsernameToken

可驗證基本鑑別(使用者名稱和密碼)。

這個登入配置適用於 6.0.x 版系統。

wssecurity.X509BST

檢查憑證和憑證路徑的有效性來驗證 X.509 二進位安全記號 (BST)。

這個登入配置適用於 6.0.x 版系統。

LTPA_WEB

處理 Servlet 和 JavaServer Pages (JSP) 檔之類的 Web 儲存器元件登入要求。

com.ibm.ws.security.web.AuthenLoginModule 登入模組預先定義在 LTPA 登入配置中。您可以在 LTPA_WEB 登入配置中,在這個模組之前或之後新增自訂登入模組。

LTPA_WEB 登入配置可以處理 HttpServletRequest 物件、HttpServletResponse 物件,以及利用回呼處理常式傳入的 Web 應用程式名稱。如需相關資訊,請參閱資訊中心的「範例:自訂伺服器端 Java 鑑別和授權服務鑑別和登入配置」。

LTPA

處理 LTPA_WEB 登入配置所不處理的登入要求。

WebSphere Application Server 5.1 版和先前的版本使用這個登入配置。

com.ibm.ws.security.server.lm.ltpaLoginModule 登入模組預先定義在 LTPA 登入配置中。您可以在 LTPA 登入配置中,在這個模組之前或之後新增自訂登入模組。如需相關資訊,請參閱資訊中心的「範例:自訂伺服器端 Java 鑑別和授權服務鑑別和登入配置」。




標示(線上)的鏈結表示需要存取網際網路。

相關概念
相關工作
相關參考
Java 鑑別和授權服務的配置項目設定


檔名: usec_sysjaas.html