第 12 章 安全管理引用
12.1. 包括的验证模块
Code 名称通常包含 Role。
Code 值或完整名称(软件包限定)来引用模块。
验证模块
表 12.1. RealmDirect
| Code | RealmDirect
|
| 类 | org.jboss.as.security.RealmDirectLoginModule
|
| 描述 |
直接和安全区交互的登录模块实现。这个登录模块允许将所有和后备存储的交互委托给安全区,从而不需要任何重复和同步的定义。它适用于远程调用和管理接口。
|
表 12.2. RealmDirect 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
realm |
字符串
| ApplicationRealm
|
期望的区的名称。
|
表 12.3. Client
| Code | Client
|
| 类 | org.jboss.security.ClientLoginModule
|
| 描述 |
这个登录模块的目的是当 JBoss EAP 6 充当客户时建立调用者标识符和凭证。它不应该作为用于服务器验证的安全域的一部分。
|
表 12.4. Client 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
multi-threaded | true 或 false
| false
|
如果每个线程都有自己的 principal 和凭证存储,请将其设置为 true。false 则指定虚拟机里的所有线程都共享系统的标识符和凭证。
|
password-stacking
| useFirstPass 或 false
| false
|
设置为
useFirstPass 表示这个登录模块应该寻找存储在 LoginContext 里的信息以用作标识符。当堆积这个登录模块和其他模块时可以使用这个选项。
|
restore-login-identity
| true 或 false
| false
|
如果在
login() 方法的开始遇到的标识符和凭证在 logout() 被调用后要重新存储,请将其设置为 true。
|
表 12.5. Remoting
| Code | Remoting
|
| 类 | org.jboss.as.security.remoting.RemotingLoginModule
|
| 描述 |
这个登录模块用于检查当前验证的的请求是否是从远程连接接收的,如果是则使用在远程验证过程中创建的标识符并和当前请求相关联。如果这个请求不是通过远程连接到达的,这个模块将不会做任何事情,并允许基于 JAAS 的登录继续,进入下一个模块。
|
表 12.6. Remoting 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
password-stacking | useFirstPass 或 false
| false
| useFirstPass 的值表示这个登录模块应该首先查看存储在 LoginContext 里关于这个标识符的信息。当堆积这个登录模块和其他模块时可以使用这个选项。
|
principalClass
|
全限定类名。
|
无
|
包含一个将 String 参数用作主体(Principal)名称的构造器的
Principal 实现类。
|
unauthenticatedIdentity
|
主体名称。
|
无
|
定义分配给不包含验证信息的请求的主体名称。这允许不受保护的 servlet 调用不要求专有角色的 EJB 上的方法。这样的主体没有关联的角色且只访问未设置安全性的 EJB 或者和
unchecked permission 约束关联的 EJB。
|
表 12.7. Certificate
| Code | Certificate
|
| 类 | org.jboss.security.auth.spi.BaseCertLoginModule
|
| 描述 |
这个登录模块的目的是基于
X509 Certificates 验证用户。其中一个用例是 web 应用程序的 CLIENT-CERT 验证。
|
表 12.8. Certificate Module Options
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
securityDomain
| 字符串 |
无
|
具有持有信任证书的信任库的 JSSE 配置的安全域的名称。
|
verifier
| 类 |
无
|
用户登录证书检验的
org.jboss.security.auth.certs.X509CertificateVerifier 的类名。
|
表 12.9. CertificateRoles
| Code | CertificateRoles
|
| 类 | org.jboss.security.auth.spi.CertRolesLoginModule
|
| 描述 |
这个登录模块扩展了 Certificate 登录模块以从属性文件添加角色映射能力。它使用和 Certificate 登录模块相同的所有选项,并添加了如下选项。
|
表 12.10. CertificateRoles 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
rolesProperties
| 字符串 | roles.properties
|
包含分配给每个用户的资源或文件的名称。角色属性文件里的格式必须是
username=role1,role2,其中 username 是证书的 DN,不包括任何 =(等号)和空格字符。下面的例子是正确的格式:
CN\=unit-tests-client,\ OU\=Red\ Hat\ Inc.,\ O\=Red\ Hat\ Inc.,\ ST\=North\ Carolina,\ C\=US |
defaultRolesProperties
| 字符串 | defaultRoles.properties
|
如果未找到
rolesProperties 文件所使用的资源或文件的名称。
|
roleGroupSeparator
| 单个字符。 | . (单一句号)
|
用作
rolesProperties 文件里角色组分隔符的字符。
|
表 12.11. Database
| Code | Database |
| 类 | org.jboss.security.auth.spi.DatabaseServerLoginModule
|
| 描述 |
支持验证和角色映射的基于 JDBC 的登录模块。这基于具有下列定义的两个逻辑表。
|
表 12.12. Database 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
digestCallback
| 全限定类名 |
无
|
包括 pre/post 摘要内容(如对输入密码哈希加密的 salt)的
DigestCallback 实现的类名。它只有在已指定 hashAlgorithm 时才会被使用。
|
dsJndiName
| JNDI 资源 |
无
|
保存验证信息的 JNDI 资源的名称。这个选项是必需的。
|
hashAlgorithm
| String |
使用明文密码
|
用于哈希加密密码的消息摘要算法。所支持的算法依赖于 Java 安全提供者,但下列算法都是被支持的:
MD5、SHA-1 和 SHA-256。
|
hashCharset
| String |
平台的默认编码
|
转换密码字符串为字节队列所使用的字符集/编码的名称。其值包括所有被支持的 Java 字符集名称。
|
hashEncoding
| String |
Base64
|
所使用的字符串编码格式。
|
ignorePasswordCase
| 布尔值 |
false
|
指定密码比较是否应该忽略大小写的标记。
|
inputValidator
| 全限定类名 |
无
|
用于检验客户提供的用户和密码的 InputValidator 实现的实例。
|
principalsQuery
| prepared SQL 语句 | select Password from Principals where PrincipalID=?
|
获取 principal 的信息的 prepared SQL 查询。
|
rolesQuery
| prepared SQL 语句 |
无
|
获取角色信息的 prepared SQL 查询。它应该和
select Role, RoleGroup from Roles where PrincipalID=? 相等,这里的 Role 是角色名称而 RoleGroup 的值总是带有大写 R 的 Roles 或 CallerPrincipal。
|
storeDigestCallback
| 全限定类名 |
无
|
The class name of the
DigestCallback implementation that includes pre/post digest content like salts for hashing the store/expected password. Only used if hashStorePassword or hashUserPassword is true and hashAlgorithm has been specified.
|
suspendResume
| 布尔值 |
true
|
在数据库操作期间现有的 JTA 事务是否应该被暂停。
|
throwValidatorError
| 布尔值 |
false
|
指定检验错误是否应该开放给客户的标记
|
transactionManagerJndiName
| JNDI 资源 |
java:/TransactionManager
|
登录模块使用的事务管理者的 JNDI 名称。
|
表 12.13. DatabaseCertificate
| Code | DatabaseCertificate
|
| 类 | org.jboss.security.auth.spi.DatabaseCertLoginModule
|
| 描述 |
这个登录模块扩展了 Certificate 登录模块以从数据库表添加角色映射能力。它使用和 Certificate 登录模块相同的所有选项,并添加了如下选项。
|
表 12.14. DatabaseCertificate 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
dsJndiName
| JNDI 资源 |
|
保存验证信息的 JNDI 资源的名称。这个选项是必需的。
|
rolesQuery
| prepared SQL 语句 | select Role,RoleGroup from Roles where PrincipalID=?
|
为了映射角色的 prepared SQL 语句。它应该和
select Role, RoleGroup from Roles where PrincipalID=? 相等,这里的 Role 是角色名称而 RoleGroup 的值总是带有大写 R 的 Roles 或 CallerPrincipal。
|
suspendResume
| true 或 false
| true
|
在数据库操作期间现有的 JTA 事务是否应该被暂停。
|
表 12.15. Identity
| Code | Identity
|
| 类 | org.jboss.security.auth.spi.IdentityLoginModule
|
| 描述 |
关联这个模块选项里指定的 principal 和任何针对这个模块验证的主题。所使用的 Principal 类的类型是
org.jboss.security.SimplePrincipal。如果没有指定 principal 选项,那使用的名称是 guest。
|
表 12.16. Identity 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
principal
| String | guest
|
用于 principal 的名称。
|
roles
| 用逗号隔开的字符串的列表 |
无
|
将分配给主题的用逗号隔开的角色列表。
|
表 12.17. Ldap
| Code | Ldap
|
| 类 | org.jboss.security.auth.spi.LdapLoginModule
|
| 描述 |
当用户名和密码存储在可通过 JNDI LDAP 供应商访问的 LDAP 服务器上时进行的验证。许多选项不是必需的,因为它们可由 LDAP 供应商或系统环境来决定。
|
表 12.18. Ldap 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
java.naming.factory.initial
| 类名 | com.sun.jndi.ldap.LdapCtxFactory
| InitialContextFactory 实现的类名。
|
java.naming.provider.url
| ldap:// URL
|
无
|
LDAP 服务器的 URL。
|
java.naming.security.authentication
| none、simple 或 SASL 机制的名称。
| simple
|
用于绑定 LDAP 服务器的安全级别。
|
java.naming.security.protocol
| 传输协议 |
如果未指定,则由供应商决定。
|
用于安全访问的传输协议,如 SSL。
|
java.naming.security.principal
| 字符串 |
无
|
用于验证调用者的 principal 的名称。它是根据下面描述的属性构建的。
|
java.naming.security.credentials
| 凭证类型 |
无
|
验证模式使用的凭证类型。其中一些例子包括哈希密码、明文密码、密钥或证书。如果没有指定这个属性,其行为将由服务供应商决定。
|
principalDNPrefix
| 字符串 |
|
添加到用户名以组成用户 DN 的前缀。你可以提示用户输入用户名并使用
principalDNPrefix 和 principalDNSuffix 构建全限定 DN。
|
principalDNSuffix
| 字符串 |
|
添加到用户名以组成用户 DN 的后缀。你可以提示用户输入用户名并使用
principalDNPrefix 和 principalDNSuffix 构建全限定 DN。
|
useObjectCredential
| true 或 false
|
false
|
凭证是否应该用
org.jboss.security.auth.callback.ObjectCallback 类型的回调方法作为不透明的对象、还是用 JAAS PasswordCallback 作为 char[](字符数组)密码获得。这允许传递 non-char[](非字符数组)凭证信息到 LDAP 服务器。
|
rolesCtxDN
| 全限定的 DN |
无
|
用于搜索用户角色的上下文的全限定 DN。
|
userRolesCtxDNAttributeName
|
attribute
|
无
|
包含搜索用户角色的上下文 DN 的用户对象里的属性。它和
rolesCtxDN 的区别是搜索用户角色的上下文可能对于每个用户都是唯一的。
|
roleAttributeID
| attribute | roles
|
包含用户角色的属性的名称。
|
roleAttributeIsDN
| true 或 false
| false
| roleAttributeID 是否包含角色对象的全限定 DN。如果为 false,角色名将从上下文名称的 roleNameAttributeId 属性值里获取。某些目录模式,如 Microsoft Active Directory,要求这个属性的值为 true。
|
roleNameAttributeID
| attribute | name
|
包含角色名称的
roleCtxDN 上下文里的属性的名称。如果 roleAttributeIsDN 属性为 true,这个属性将被用来查找角色对象的 name 属性。
|
uidAttributeID
| attribute | uid
| UserRolesAttributeDN 里对应用户 ID 的属性的名称。它被用来定位用户角色。
|
matchOnUserDN
| true 或 false
| false
|
对用户角色搜索是否应该匹配用户的全限定 DN 或只是用户名而已。如果为
true,完整的用户 DN 将作为匹配值。如果为 false,则只使用用户名来匹配 uidAttributeName 属性。
|
allowEmptyPasswords
| true 或 false
| false
|
是否允许空的密码。多数 LDAP 服务器将空密码视同匿名登录尝试。要拒绝空密码,请将它设置为
false。
|
表 12.19. LdapExtended
| Code | LdapExtended
|
| 类 | org.jboss.security.auth.spi.LdapExtLoginModule
|
| 描述 |
另外的一个使用搜索来定位绑定用户和关联角色的 LDAP 登录模块实现。角色队列递归地解析 DN 来导航分层的角色结构。它使用和 LDAP 模块相同的
java.naming 选项以及下列 LDAP 模块没有的选项。
这个验证以两步进行:
|
表 12.20. LdapExtended 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
baseCtxDN
| 全限定的 DN |
无
|
开始用户搜索的顶层上下文的固定 DN。
|
bindCredential
| 字符串,可以进行加密。 |
无
|
更多信息请参考《JBoss EAP 安全指南》
|
bindDN
| 全限定的 DN |
无
|
用户和角色查询里用来绑定 LDAP 服务器的 DN。这个 DN 需要读取和搜索
baseCtxDN 和 rolesCtxDN 值上的权限。
|
baseFilter
| LDAP 过滤器字符串 |
无
|
用来定位要验证的用户的上下文的搜索过滤器。从登录模块回调方法里获得的输入用户名或
userDN 将替换至过滤器里的 {0} 表达式。搜索过滤器的一个常见例子是 (uid={0})。
|
rolesCtxDN
| 全限定的 DN |
无
|
用于搜索用户角色的上下文的固定 DN。这不是实际角色的 DN,它是包含用户角色的对象所在的 DN。例如,在 Microsoft Active Directory 服务器里,它是用户帐号所在的 DN。
|
roleFilter
| LDAP 过滤器字符串 |
无
|
用来定位和验证用户相关联的角色的搜索过滤器。从登录模块回调方法里获得的输入用户名和
userDN 将被替换过滤器里的 {0} 表达式。已验证的 userDN 将替换过滤器里的 {1} 表达式。匹配输入用户名的搜索过滤器示例是 (member={0})。对应已验证的 userDN 的例子是 (member={1})。
|
roleAttributeIsDN | true 或 false
| false
| roleAttributeID 是否包含角色对象的全限定 DN。如果为 false,角色名将从上下文名称的 roleNameAttributeId 属性值里获取。某些目录模式,如 Microsoft Active Directory,要求这个属性的值为 true。
|
defaultRole
|
角色名称
|
无
|
用于所有已验证用户的角色
|
parseRoleNameFromDN
| true 或 false
| false
|
指定查询返回的 DN 是否包含 roleNameAttributeID。如果设置为
true,将检查 DN 里是否有 roleNameATtributeID,如果为 false,将不会检查。这个标记可以提高 LDAP 查询的性能。
|
parseUsername
| true 或 false
| false
|
指定 DN 是否对用户名进行解析的标记。如果为
true,DN 将对用户名进行解析。如果为 false,DN 将不对用户名进行解析。这个选项是和 usernameBeginString 及 usernameEndString 一起使用的。
|
usernameBeginString
|
字符串
|
无
|
定义将从 DN 的开头删除以显示用户名的字符串。这个选项是和
usernameEndString 一起使用的。
|
usernameEndString
|
字符串
|
无
|
定义将从 DN 的结尾删除以显示用户名的字符串。这个选项是和
usernameBeginString 一起使用的。
|
roleNameAttributeID
| attribute | name
|
包含角色名称的
roleCtxDN 上下文里的属性的名称。如果 roleAttributeIsDN 属性为 true,这个属性将被用来查找角色对象的 name 属性。
|
distinguishedNameAttribute
| attribute | distinguishedName
|
包含用户 DN 的用户条目里的属性的名称。如果用户自身的 DN 包含特殊字符(如反斜杠)而阻止了正确的用户映射,这就是有必要的。如果这个属性不存在,条目的 DN 将会被使用。
|
roleRecursion
| 整数 | 0
|
角色搜索的递归级别数。禁用递归可将其设置为
0。
|
searchTimeLimit
| 整数 | 10000 (10 秒)
|
用户或角色搜索的超时时间(毫秒)。
|
searchScope
| OBJECT_SCOPE, ONELEVEL_SCOPE, SUBTREE_SCOPE 中的一个
| SUBTREE_SCOPE
|
使用的搜索作用域
|
allowEmptyPasswords
| true 或 false
| false
|
是否允许空的密码。多数 LDAP 服务器将空密码视同匿名登录尝试。要拒绝空密码,请将它设置为 false。
|
referralUserAttributeIDToCheck
|
attribute
|
无
|
如果您没有使用 Referral,这个选项可被忽略。在使用 Referral 时,如果角色对象位于 Referral 内部,这个选项表示包含为某个角色(例如,
member)定义的用户的属性名称。用户将根据这个属性名称的上下文进行检查。如果没有设置这个选项,检查总是会失败,所以角色对象无法存储在 Referral 树里。
|
表 12.21. RoleMapping
| Code | RoleMapping
|
| 类 | org.jboss.security.auth.spi.RoleMappingLoginModule
|
| 描述 |
映射作为验证过程的最终结果的角色到声明式角色。当你添加这个模块到安全域里时,它必须标记为
optional。
|
表 12.22. RoleMapping 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
rolesProperties
| 属性文件或资源的全限定文件路径 | none
|
映射角色到替代角色的属性文件或资源的全限定文件路径。其格式是
original_role=role1,role2,role3。
|
replaceRole
| true 或 false
| false
|
是否添加当前的角色,或者用映射的角色替换当前的角色。设为
true 则进行替换。
|
注意
rolesProperties 模块选项是必需的。
表 12.23. RunAs
| Code | RunAs
|
| 类 | org.jboss.security.auth.spi.RunAsLoginModule
|
| 描述 |
这是一个 Helper 模块,它在验证的登录阶段将
run as 角色推入栈,并在提交或中止阶段从栈里弹出 run as 角色。这个登录模块为其他必须访问安全资源以执行验证的登录模块(如访问安全 EJB 的登录模块)提供了一个角色。在要求 run as 角色的登录模块建立之前,你必须先配置好 RunAsLoginModule。
|
表 12.24. RunAs 选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
roleName
| 角色名称 | nobody
|
在登录阶段用作
run as 角色的角色的名称。
|
principalName
| 主体名称 | nobody
|
登录阶段用作
run as 主体的主体名称。如果没有指定,则使用默认值 nobody。
|
principalClass
| 全限定类名。 |
无
|
包含一个将 String 参数用作主体(Principal)名称的构造器的
Principal 实现类。
|
表 12.25. Simple
| Code | Simple
|
| 类 | org.jboss.security.auth.spi.SimpleServerLoginModule
|
| 描述 |
用于测试目的的快速设置安全性的模块。它实现了下列简单的算法:
|
Simple 模块选项
Simple 模块没有选项。
表 12.26. ConfiguredIdentity
| Code | ConfiguredIdentity
|
| 类 | org.picketbox.datasource.security.ConfiguredIdentityLoginModule
|
| 描述 |
关联这个模块选项里指定的 principal 和任何针对这个模块验证的主题。所使用的 Principal 类的类型是
org.jboss.security.SimplePrincipal。
|
表 12.27. ConfiguredIdentity 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
username
| 字符串 | 无 | 用于验证的用户名。 |
password
| 加密的字符串 | "" |
用于验证的密码。要加密这个密码,请在命令行直接使用这个模块。
将这个命令的运行结果粘贴到模块选项的 value 字段。默认值是一个空字符串。
|
principal
| 主体的名称 | none
|
将和针对这个模块验证的任何主题关联的 principal。
|
表 12.28. SecureIdentity
| Code | SecureIdentity
|
| 类 | org.picketbox.datasource.security.SecureIdentityLoginModule
|
| 描述 |
提供这个模块只是为了和之前的系统兼容。它允许你加密密码并和静态 principal 一起使用这个密码。如果你的应用程序使用了
SecureIdentity,请考虑使用密码库机制。
|
表 12.29. SecureIdentity 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
username
| 字符串 | 无 | 用于验证的用户名。 |
password
| 加密的字符串 | "" |
用于验证的密码。要加密这个密码,请在命令行直接使用这个模块。
将这个命令的运行结果粘贴到模块选项的 value 字段。默认值是一个空字符串。
|
managedConnectionFactoryName
| JCA 资源 | 无 |
数据源的 JCA 连接工厂的名称。
|
表 12.30. PropertiesUsers
| Code | PropertiesUsers
|
| 类 | org.jboss.security.auth.spi.PropertiesUsersLoginModule
|
| 描述 |
使用一个属性文件来存储用户名和密码。它没有提供授权(角色映射)。这个模块只适合于测试用途。
|
表 12.31. SimpleUsers
| Code | SimpleUsers
|
| 类 | org.jboss.security.auth.spi.SimpleUsersLoginModule
|
| 描述 |
这个登录模块使用
module-option 保存用户名和明文密码。 module-option 的 name 和 value 属性指定了用户名和密码。它只是用于测试目的,不适合用于产品环境里。
|
表 12.32. LdapUsers
| Code | LdapUsers
|
| 类 | org.jboss.security.auth.spi.LdapUsersLoginModule
|
| 描述 | LdapUsers 模块被 ExtendedLDAP 和 AdvancedLdap 模块取代。
|
表 12.33. Kerberos
| Code | Kerberos
|
| 类 | com.sun.security.auth.module.Krb5LoginModule
|
| 描述 |
用 GSSAPI 执行Kerberos 登录验证。这个模块不是 Sun Microsystems 提供的 API 里的安全框架的一部分。细节可以在 http://docs.oracle.com/javase/7/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html 里找到。这个模块需要和另外一个处理验证和角色映射的模块配对。
|
表 12.34. Kerberos 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
storekey
| true 或 false
| false |
是否添加
KerberosKey 到主题的私有凭证。
|
doNotPrompt
| true 或 false
| false |
如果设置为
true,用户将不会被提示输入密码。
|
useTicketCache
|
布尔值,
. true 或 false。
| false |
如果为
true,TGT 将从票据缓存里获取。如果为 false,将不会使用票据缓存。
|
ticketcache
| 代表 Kerberos 票据缓存的文件或资源。 |
默认值取决于你所使用的操作系统。
| 票据缓存的位置。 |
useKeyTab
| true 或 false
| false | 是否从密钥表文件里获取 principal 的密钥。 |
keytab
| 代表 Kerberos keytab 的文件或资源。 |
操作系统的 Kerberos 配置文件的位置,或者
/home/user/krb5.keytab。
| 密钥表文件的位置。 |
principal
| 字符串 | 无 |
Principal 的名称。这可以是简单的用户名或服务名,如
host/testserver.acme.com。或者当密钥表包含多个 principal 时,使用它而不是从密钥表里获取 principal。
|
useFirstPass
| true 或 false
| false |
是否以从
javax.security.auth.login.name 和 javax.security.auth.login.password 为关键字从模块的共享状态获取用户名和密码。如果验证失败,不会进行重试。
|
tryFirstPass
| true 或 false
| false |
和
useFirstPass 相同,但如果验证失败,模块将使用 CallbackHandler 来获取新的用户名和密码。如果第二次验证失败,将报告给调用的应用程序。
|
storePass
| true 或 false
| false |
是否在模块的共享状态里保存用户名和密码。如果关键字已存在于共享内存里,或者验证失败的话,这都不会发生。
|
clearPass
| true 或 false
| false |
设置它为
true 在两个验证阶段都完成后从共享内存里清除用户名和密码。
|
表 12.35. SPNEGO
| Code | SPNEGO
|
| 类 | org.jboss.security.negotiation.spnego.SPNEGOLoginModule
|
| 描述 |
允许在 Microsoft Active Directory 服务器或其他支持 SPNEGO 的环境里进行 SPNEGO 验证。SPNEGO 也可以包含 Kerberos 凭证。这个模块需要和另外一个处理验证和角色映射的模块配对。
|
表 12.36. SPNEGO 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
serverSecurityDomain
| string
| null.
|
定义通过 kerberos 登录模块获取服务器服务的标识符所使用的域。这个属性是必须设置的。
|
removeRealmFromPrincipal
| boolean
| false
|
指定在进一步处理前,应该从主体删除 kerberos 区。
|
usernamePasswordDomain
| string
| null
|
指定当 Kerberos 验证失败时用作失效切换登录模块的其他安全域。
|
表 12.37. AdvancedLdap
| Code | AdvancedLdap |
| 类 | org.jboss.security.negotiation.AdvancedLdapLoginModule
|
| 描述 |
提供额外功能的模块,如 SASL 和对 JAAS 安全域的使用。
|
表 12.38. AdvancedLdap 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
bindAuthentication
|
字符串
|
无
|
用于绑定到目录服务器的 SASL 验证的类型。
|
java.naming.provider.url
| string
|
无
|
目录服务器的 URI.
|
baseCtxDN
|
全限定的 DN
|
无
|
要用作搜索基础的标识名。
|
baseFilter
|
代表 LDAP 搜索过滤器的字符串。
|
无
|
用于缩减搜索结果的过滤器。
|
roleAttributeID
|
代表 LDAP 属性的字符串值。
|
无
|
包含授权角色的名称的 LDAP 属性。
|
roleAttributeIsDN
| true 或 false
| false
|
这个角色属性是否是标识名(Distinguished Name,DN)。
|
roleNameAttributeID
|
代表 LDAP 属性的字符串。
|
无
|
包含实际角色属性的
RoleAttributeId 里所包含的属性。
|
recurseRoles
| true 或 false
| false
|
是否在
RoleAttributeId 里递归地搜索角色。
|
referralUserAttributeIDToCheck
|
attribute
|
无
|
如果您没有使用 Referral,这个选项可被忽略。在使用 Referral 时,如果角色对象位于 Referral 内部,这个选项表示包含为某个角色(例如,
member)定义的用户的属性名称。用户将根据这个属性名称的上下文进行检查。如果没有设置这个选项,检查总是会失败,所以角色对象无法存储在 Referral 树里。
|
表 12.39. AdvancedADLdap
| Code | AdvancedADLdap |
| 类 | org.jboss.security.negotiation.AdvancedADLoginModule
|
| 描述 |
这个模块扩展了
AdvancedLdap 登录模块,并添加额外的和 Microsoft Active Directory 相关的参数。
|
表 12.40. UsersRoles
| Code | UsersRoles |
| 类 | org.jboss.security.auth.spi.UsersRolesLoginModul
|
| 描述 |
支持存储在两个不同属性文件里的多个用户和角色的简单登录模块。
|
表 12.41. UsersRoles 模块选项
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
usersProperties
|
文件或资源的路径。
| users.properties
|
包含用户-密码映射的文件或资源。这个文件的格式是
username=password。
|
rolesProperties
|
文件或资源的路径。
| roles.properties
|
包含用户-角色映射的文件或资源。这个文件的格式是
username=role1,role2,role3。
|
password-stacking
| useFirstPass 或 false
| false
| useFirstPass 的值表示这个登录模块应该首先查看存储在 LoginContext 里关于这个标识符的信息。当堆积这个登录模块和其他模块时可以使用这个选项。
|
hashAlgorithm
|
代表密码的哈希算法的字符串。
| none
|
用于 hash 密码的
java.security.MessageDigest 算法的名称。这个选项没有默认值,你必须显性地设置它来启用哈希算法。当指定了 hashAlgorithm 时,CallbackHandler 里包含的明文密码将在作为 inputPassword 参数传递给 UsernamePasswordLoginModule.validatePassword 前进行 hash。保存在 users.properties 文件里的密码必须进行同等的 hash。
|
hashEncoding
| base64 或 hex
| base64
|
如果设置了 hashAlgorithm,哈希密码的字符串格式。
|
hashCharset
|
字符串
|
容器的运行时环境里的默认编码集。
|
将明文密码转换为字节队列的编码。
|
unauthenticatedIdentity
|
主体名称
|
无
|
定义分配给不包含验证信息的请求的 principal 名称。这允许不受保护的 servlet 调用不要求专有角色的 EJB 上的方法。这样的 principal 没有关联的角色且只访问未设置安全性的 EJB 或者和
unchecked permission 约束关联的 EJB。
|
验证模块是 javax.security.auth.spi.LoginModule 的实现。关于创建自定义验证模块的更多信息,请参考相关的 API 文档。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.