CredentialHandler 元件

目錄

簡介

CredentialHandler 元素代表 領域 用來比較提供的憑證(例如密碼)與 領域 儲存的憑證版本所使用的元件。CredentialHandler 也可用於產生給定憑證的新儲存版本,例如在將新使用者新增到 領域 或變更使用者密碼時。

CredentialHandler 元素必須巢狀在 領域 元件內。如果未包含,將使用 MessageDigestCredentialHandler 建立預設的 CredentialHandler

屬性

共用屬性

所有 CredentialHandler 的實作都支援下列屬性

屬性 說明
className

要使用的實作的 Java 類別名稱。此類別必須實作 org.apache.catalina.CredentialHandler 介面。

與大多數 Catalina 元件不同,有數個標準的 CredentialHandler 實作可用。因此,如果存在 CredentialHandler 元素,則 className 屬性必須用於選擇您要使用的實作。

MessageDigestCredentialHandler

當儲存的密碼受訊息摘要保護時,會使用 MessageDigestCredentialHandler。此憑證處理常式支援下列儲存密碼格式

  • plainText - 如果未指定演算法,則為純文字憑證
  • encodedCredential - 使用已設定摘要處理密碼的十六進位編碼摘要
  • {MD5}encodedCredential - 密碼的 Base64 編碼 MD5 摘要
  • {SHA}encodedCredential - 密碼的 Base64 編碼 SHA1 摘要
  • {SSHA}encodedCredential - 20 個字元的鹽值,後接以 Base64 編碼的加鹽 SHA1 摘要
  • salt$iterationCount$encodedCredential - 以 $ 分隔的十六進位編碼鹽值、反覆運算次數代碼和十六進位編碼憑證

如果儲存的密碼格式不包含反覆運算次數,則會使用反覆運算次數 1。

如果儲存的密碼格式不包含鹽值,則不會使用鹽值。

屬性 說明
algorithm

用於編碼儲存在資料庫中的使用者密碼的 java.security.MessageDigest 演算法名稱。如果未指定,則假設使用者密碼儲存在純文字中。

encoding

處理密碼摘要需要將其轉換為位元組。此屬性會決定用於字元與位元組之間轉換的字元編碼。如果未指定,則會使用 UTF-8。

iterations

從純文字憑證建立新的儲存憑證時要使用的反覆運算次數。

saltLength

從純文字憑證建立新的儲存憑證時要使用的隨機產生鹽值的長度。

NestedCredentialHandler

NestedCredentialHandlerCredentialHandler 的實作,會委派給一個或多個子 CredentialHandler

使用 NestedCredentialHandler 可讓開發人員結合多個相同或不同類型的 CredentialHandler

CredentialHandler 是透過將 CredentialHandler 元素嵌套在定義 NestedCredentialHandler 的 CredentialHandler 元素中來定義的。憑證會依據列出的順序與每個 CredentialHandler 相符。與任何 CredentialHandler 相符就足以讓憑證被視為相符。

SecretKeyCredentialHandler

當儲存的密碼是使用 javax.crypto.SecretKeyFactory 建立時,會使用 SecretKeyCredentialHandler。此憑證處理常式支援下列儲存密碼格式

  • salt$iterationCount$encodedCredential - 以 $ 分隔的十六進位編碼鹽值、反覆運算次數代碼和十六進位編碼憑證

如果儲存的密碼格式不包含反覆運算次數,則會使用反覆運算次數 1。

如果儲存的密碼格式不包含鹽值,則不會使用鹽值。

屬性 說明
algorithm

用於編碼儲存在資料庫中的使用者密碼的秘密金鑰演算法名稱。如果未指定,則會使用預設值 PBKDF2WithHmacSHA1

keyLength

為儲存憑證產生的金鑰長度。如果未指定,則會使用預設值 160

iterations

從純文字憑證建立新的儲存憑證時要使用的反覆運算次數。

saltLength

從純文字憑證建立新的儲存憑證時要使用的隨機產生鹽值的長度。

巢狀元件

如果您使用 NestedCredentialHandler 實作 或延伸 NestedCredentialHandler 的 CredentialHandler,則可以在其中嵌套一個或多個 <CredentialHandler> 元素。

特殊功能

CredentialHandler 元素沒有任何特殊功能。