CredentialHandler 组件
目录
简介
CredentialHandler 元素表示 Realm 用来比较所提供的凭据(例如密码)与 Realm 存储的凭据版本的组件。CredentialHandler 还可以用于生成给定凭据的新存储版本,这在例如向 Realm 添加新用户或更改用户密码时是必需的。
CredentialHandler 元素必须嵌套在 Realm 组件中。如果未包含此元素,将使用 MessageDigestCredentialHandler 创建一个默认的 CredentialHandler。
属性
常用属性
CredentialHandler 的所有实现都支持以下属性
属性 | 描述 |
---|---|
className |
要使用的实现类的 Java 类名。此G类必须实现 |
与大多数 Catalina 组件不同,有多个标准 CredentialHandler 实现可用。因此,如果存在 CredentialHandler 元素,则必须使用 className
属性来选择您希望使用的实现。
MessageDigestCredentialHandler
当存储的密码受消息摘要保护时,将使用 MessageDigestCredentialHandler。此凭据处理器支持以下形式的存储密码
- plainText - 如果未指定算法,则为明文凭据
- encodedCredential - 使用配置的摘要进行处理后,密码的十六进制编码摘要
- {MD5}encodedCredential - 密码的 Base64 编码 MD5 摘要
- {SHA}encodedCredential - 密码的 Base64 编码 SHA1 摘要
- {SSHA}encodedCredential - 20 字符盐值,后跟加盐的 SHA1 摘要 Base64 编码
- salt$iterationCount$encodedCredential - 十六进制编码的盐值、迭代计数和十六进制编码的凭据,每个都用 $ 分隔
如果存储的密码形式不包含迭代计数,则使用迭代计数 1。
如果存储的密码形式不包含盐值,则不使用盐值。
属性 | 描述 |
---|---|
algorithm |
用于编码数据库中存储的用户密码的 |
encoding |
摘要密码需要将其转换为字节。此属性确定字符和字节之间转换所使用的字符编码。如果未指定,将使用 UTF-8。 |
iterations |
从明文凭据创建新的存储凭据时使用的迭代次数。 |
saltLength |
从明文凭据创建新的存储凭据时使用的随机生成盐值的长度。 |
NestedCredentialHandler
NestedCredentialHandler 是 CredentialHandler 的一个实现,它将委托给一个或多个子 CredentialHandler。
使用 NestedCredentialHandler 允许开发人员组合相同或不同类型的多个 CredentialHandler。
子 CredentialHandler 通过将 CredentialHandler 元素嵌套在定义 NestedCredentialHandler 的 CredentialHandler
元素内部来定义。凭据将按照它们列出的顺序与每个 CredentialHandler
进行匹配。与任何 CredentialHandler 的匹配都足以使凭据被视为匹配。
SecretKeyCredentialHandler
当存储的密码使用 javax.crypto.SecretKeyFactory
构建时,将使用 SecretKeyCredentialHandler。此凭据处理器支持以下形式的存储密码
- salt$iterationCount$encodedCredential - 十六进制编码的盐值、迭代计数和十六进制编码的凭据,每个都用 $ 分隔
如果存储的密码形式不包含迭代计数,则使用迭代计数 1。
如果存储的密码形式不包含盐值,则不使用盐值。
属性 | 描述 |
---|---|
algorithm |
用于编码数据库中存储的用户密码的秘密密钥算法名称。如果未指定,则使用默认值 |
keyLength |
为存储凭据生成的密钥长度。如果未指定,则使用默认值 |
iterations |
从明文凭据创建新的存储凭据时使用的迭代次数。 |
saltLength |
从明文凭据创建新的存储凭据时使用的随机生成盐值的长度。 |
嵌套组件
如果您正在使用 NestedCredentialHandler 实现 或扩展 NestedCredentialHandler 的 CredentialHandler,则一个或多个 <CredentialHandler> 元素可以嵌套在其内部。
特殊功能
没有与 CredentialHandler 元素相关的特殊功能。