第 12 章 安全管理引用
12.1. 包括的验证模块
JBoss EAP 6 里包含了下面的验证模块。其中一些模块处理授权及验证。这些模块的
Code
名称通常包含 Role
。
当你配置这些模块时,请使用
Code
值或完整名称(软件包限定)来引用模块。
验证模块
Code | RealmDirect
|
类 | org.jboss.as.security.RealmDirectLoginModule
|
描述 |
直接和安全区交互的登录模块实现。这个登录模块允许将所有和后备存储的交互委托给安全区,从而不需要任何重复和同步的定义。它适用于远程调用和管理接口。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
realm |
字符串
| ApplicationRealm
|
期望的区的名称。
|
Code | Client
|
类 | org.jboss.security.ClientLoginModule
|
描述 |
这个登录模块的目的是当 JBoss EAP 6 充当客户时建立调用者标识符和凭证。它不应该作为用于服务器验证的安全域的一部分。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
multi-threaded | true 或 false
| false
|
如果每个线程都有自己的 principal 和凭证存储,请将其设置为 true。false 则指定虚拟机里的所有线程都共享系统的标识符和凭证。
|
password-stacking
| useFirstPass 或 false
| false
|
设置为
useFirstPass 表示这个登录模块应该寻找存储在 LoginContext 里的信息以用作标识符。当堆积这个登录模块和其他模块时可以使用这个选项。
|
restore-login-identity
| true 或 false
| false
|
如果在
login() 方法的开始遇到的标识符和凭证在 logout() 被调用后要重新存储,请将其设置为 true。
|
Code | Remoting
|
类 | org.jboss.as.security.remoting.RemotingLoginModule
|
描述 |
这个登录模块用于检查当前验证的的请求是否是从远程连接接收的,如果是则使用在远程验证过程中创建的标识符并和当前请求相关联。如果这个请求不是通过远程连接到达的,这个模块将不会做任何事情,并允许基于 JAAS 的登录继续,进入下一个模块。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
password-stacking | useFirstPass 或 false
| false
| useFirstPass 的值表示这个登录模块应该首先查看存储在 LoginContext 里关于这个标识符的信息。当堆积这个登录模块和其他模块时可以使用这个选项。
|
principalClass
|
全限定类名。
|
无
|
包含一个将 String 参数用作主体(Principal)名称的构造器的
Principal 实现类。
|
unauthenticatedIdentity
|
主体名称。
|
无
|
定义分配给不包含验证信息的请求的主体名称。这允许不受保护的 servlet 调用不要求专有角色的 EJB 上的方法。这样的主体没有关联的角色且只访问未设置安全性的 EJB 或者和
unchecked permission 约束关联的 EJB。
|
Code | Certificate
|
类 | org.jboss.security.auth.spi.BaseCertLoginModule
|
描述 |
这个登录模块的目的是基于
X509 Certificates 验证用户。其中一个用例是 web 应用程序的 CLIENT-CERT 验证。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
securityDomain
| 字符串 |
无
|
具有持有信任证书的信任库的 JSSE 配置的安全域的名称。
|
verifier
| 类 |
无
|
用户登录证书检验的
org.jboss.security.auth.certs.X509CertificateVerifier 的类名。
|
Code | CertificateRoles
|
类 | org.jboss.security.auth.spi.CertRolesLoginModule
|
描述 |
这个登录模块扩展了 Certificate 登录模块以从属性文件添加角色映射能力。它使用和 Certificate 登录模块相同的所有选项,并添加了如下选项。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
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 文件里角色组分隔符的字符。
|
Code | Database |
类 | org.jboss.security.auth.spi.DatabaseServerLoginModule
|
描述 |
支持验证和角色映射的基于 JDBC 的登录模块。这基于具有下列定义的两个逻辑表。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
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 名称。
|
Code | DatabaseCertificate
|
类 | org.jboss.security.auth.spi.DatabaseCertLoginModule
|
描述 |
这个登录模块扩展了 Certificate 登录模块以从数据库表添加角色映射能力。它使用和 Certificate 登录模块相同的所有选项,并添加了如下选项。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
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 事务是否应该被暂停。
|
Code | Identity
|
类 | org.jboss.security.auth.spi.IdentityLoginModule
|
描述 |
关联这个模块选项里指定的 principal 和任何针对这个模块验证的主题。所使用的 Principal 类的类型是
org.jboss.security.SimplePrincipal 。如果没有指定 principal 选项,那使用的名称是 guest 。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
principal
| String | guest
|
用于 principal 的名称。
|
roles
| 用逗号隔开的字符串的列表 |
无
|
将分配给主题的用逗号隔开的角色列表。
|
Code | Ldap
|
类 | org.jboss.security.auth.spi.LdapLoginModule
|
描述 |
当用户名和密码存储在可通过 JNDI LDAP 供应商访问的 LDAP 服务器上时进行的验证。许多选项不是必需的,因为它们可由 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 。
|
Code | LdapExtended
|
类 | org.jboss.security.auth.spi.LdapExtLoginModule
|
描述 |
另外的一个使用搜索来定位绑定用户和关联角色的 LDAP 登录模块实现。角色队列递归地解析 DN 来导航分层的角色结构。它使用和 LDAP 模块相同的
java.naming 选项以及下列 LDAP 模块没有的选项。
这个验证以两步进行:
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
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 树里。
|
Code | RoleMapping
|
类 | org.jboss.security.auth.spi.RoleMappingLoginModule
|
描述 |
映射作为验证过程的最终结果的角色到声明式角色。当你添加这个模块到安全域里时,它必须标记为
optional 。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
rolesProperties
| 属性文件或资源的全限定文件路径 | none
|
映射角色到替代角色的属性文件或资源的全限定文件路径。其格式是
original_role=role1,role2,role3 。
|
replaceRole
| true 或 false
| false
|
是否添加当前的角色,或者用映射的角色替换当前的角色。设为
true 则进行替换。
|
注意
对于 RoleMapping,
rolesProperties
模块选项是必需的。
Code | RunAs
|
类 | org.jboss.security.auth.spi.RunAsLoginModule
|
描述 |
这是一个 Helper 模块,它在验证的登录阶段将
run as 角色推入栈,并在提交或中止阶段从栈里弹出 run as 角色。这个登录模块为其他必须访问安全资源以执行验证的登录模块(如访问安全 EJB 的登录模块)提供了一个角色。在要求 run as 角色的登录模块建立之前,你必须先配置好 RunAsLoginModule 。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
roleName
| 角色名称 | nobody
|
在登录阶段用作
run as 角色的角色的名称。
|
principalName
| 主体名称 | nobody
|
登录阶段用作
run as 主体的主体名称。如果没有指定,则使用默认值 nobody 。
|
principalClass
| 全限定类名。 |
无
|
包含一个将 String 参数用作主体(Principal)名称的构造器的
Principal 实现类。
|
Code | Simple
|
类 | org.jboss.security.auth.spi.SimpleServerLoginModule
|
描述 |
用于测试目的的快速设置安全性的模块。它实现了下列简单的算法:
|
Simple
模块选项
Simple
模块没有选项。
Code | ConfiguredIdentity
|
类 | org.picketbox.datasource.security.ConfiguredIdentityLoginModule
|
描述 |
关联这个模块选项里指定的 principal 和任何针对这个模块验证的主题。所使用的 Principal 类的类型是
org.jboss.security.SimplePrincipal 。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
username
| 字符串 | 无 | 用于验证的用户名。 |
password
| 加密的字符串 | "" |
用于验证的密码。要加密这个密码,请在命令行直接使用这个模块。
将这个命令的运行结果粘贴到模块选项的 value 字段。默认值是一个空字符串。
|
principal
| 主体的名称 | none
|
将和针对这个模块验证的任何主题关联的 principal。
|
Code | SecureIdentity
|
类 | org.picketbox.datasource.security.SecureIdentityLoginModule
|
描述 |
提供这个模块只是为了和之前的系统兼容。它允许你加密密码并和静态 principal 一起使用这个密码。如果你的应用程序使用了
SecureIdentity ,请考虑使用密码库机制。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
username
| 字符串 | 无 | 用于验证的用户名。 |
password
| 加密的字符串 | "" |
用于验证的密码。要加密这个密码,请在命令行直接使用这个模块。
将这个命令的运行结果粘贴到模块选项的 value 字段。默认值是一个空字符串。
|
managedConnectionFactoryName
| JCA 资源 | 无 |
数据源的 JCA 连接工厂的名称。
|
Code | PropertiesUsers
|
类 | org.jboss.security.auth.spi.PropertiesUsersLoginModule
|
描述 |
使用一个属性文件来存储用户名和密码。它没有提供授权(角色映射)。这个模块只适合于测试用途。
|
Code | SimpleUsers
|
类 | org.jboss.security.auth.spi.SimpleUsersLoginModule
|
描述 |
这个登录模块使用
module-option 保存用户名和明文密码。 module-option 的 name 和 value 属性指定了用户名和密码。它只是用于测试目的,不适合用于产品环境里。
|
Code | LdapUsers
|
类 | org.jboss.security.auth.spi.LdapUsersLoginModule
|
描述 | LdapUsers 模块被 ExtendedLDAP 和 AdvancedLdap 模块取代。
|
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 里找到。这个模块需要和另外一个处理验证和角色映射的模块配对。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
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 在两个验证阶段都完成后从共享内存里清除用户名和密码。
|
Code | SPNEGO
|
类 | org.jboss.security.negotiation.spnego.SPNEGOLoginModule
|
描述 |
允许在 Microsoft Active Directory 服务器或其他支持 SPNEGO 的环境里进行 SPNEGO 验证。SPNEGO 也可以包含 Kerberos 凭证。这个模块需要和另外一个处理验证和角色映射的模块配对。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
serverSecurityDomain
| string
| null .
|
定义通过 kerberos 登录模块获取服务器服务的标识符所使用的域。这个属性是必须设置的。
|
removeRealmFromPrincipal
| boolean
| false
|
指定在进一步处理前,应该从主体删除 kerberos 区。
|
usernamePasswordDomain
| string
| null
|
指定当 Kerberos 验证失败时用作失效切换登录模块的其他安全域。
|
Code | AdvancedLdap |
类 | org.jboss.security.negotiation.AdvancedLdapLoginModule
|
描述 |
提供额外功能的模块,如 SASL 和对 JAAS 安全域的使用。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
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 树里。
|
Code | AdvancedADLdap |
类 | org.jboss.security.negotiation.AdvancedADLoginModule
|
描述 |
这个模块扩展了
AdvancedLdap 登录模块,并添加额外的和 Microsoft Active Directory 相关的参数。
|
Code | UsersRoles |
类 | org.jboss.security.auth.spi.UsersRolesLoginModul
|
描述 |
支持存储在两个不同属性文件里的多个用户和角色的简单登录模块。
|
选项 | 类型 | 默认值 | 描述 |
---|---|---|---|
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 文档。