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 的实现,它委托给一个或多个子 CredentialHandlers

使用 NestedCredentialHandler 使开发人员能够组合多个相同或不同类型的 CredentialHandler

CredentialHandlers 通过在定义 NestedCredentialHandler 的 CredentialHandler 元素内嵌套 CredentialHandler 元素来定义。凭据将按其列出的顺序与每个 CredentialHandler 进行匹配。与任何 CredentialHandler 的匹配都足以使凭据被视为匹配。

SecretKeyCredentialHandler

当使用 javax.crypto.SecretKeyFactory 构建存储的密码时,将使用 SecretKeyCredentialHandler。此凭据处理程序支持以下形式的存储密码

  • salt$iterationCount$encodedCredential - 十六进制编码的盐、迭代代码和十六进制编码的凭据,每个都用 $ 分隔

如果存储的密码格式不包含迭代计数,则使用迭代计数 1。

如果存储的密码格式不包含盐,则不使用盐。

属性 说明
algorithm

用于对存储在数据库中的用户密码进行编码的密钥算法的名称。如果未指定,则使用默认值 PBKDF2WithHmacSHA1

keyLength

为存储的凭证生成密钥的长度。如果未指定,则使用默认值 160

iterations

从明文凭据创建新的存储凭据时要使用的迭代次数。

saltLength

从明文凭据创建新的存储凭据时要使用的随机生成的盐的长度。

嵌套组件

如果你正在使用 NestedCredentialHandler Implementation 或扩展 NestedCredentialHandler 的 CredentialHandler,则一个或多个 <CredentialHandler> 元素可以嵌套在其中。

特殊功能

没有特殊功能与 CredentialHandler 元素相关联。