12.3. 所包括的安全映射模块
| 代码 | 类 |
|---|---|
| PropertiesRoles | org.jboss.security.mapping.providers.role.PropertiesRolesMappingProvider |
| SimpleRoles | org.jboss.security.mapping.providers.role.SimpleRolesMappingProvider |
| DeploymentRoles | org.jboss.security.mapping.providers.DeploymentRolesMappingProvider |
| DatabaseRoles | org.jboss.security.mapping.providers.role.DatabaseRolesMappingProvider |
| LdapRoles | org.jboss.security.mapping.providers.role.LdapRolesMappingProvider |
| LdapAttributes | org.jboss.security.mapping.providers.attribute.LdapAttributeMappingProvider |
负责可以在 jboss-web.xml 和 jboss-app.xml 部署描述符文件里完成的主体到角色映射的角色映射模块。
例 12.1. 示例
<jboss-web>
...
<security-role>
<role-name>Support</role-name>
<principal-name>Mark</principal-name>
<principal-name>Tom</principal-name>
</security-role>
...
</jboss-web>
负责可以在 jboss-web.xml 和 jboss-app.xml 部署描述符文件里完成的主体到角色映射的角色到角色映射模块(Role to Roles Mapping Module)。在这个例子里,principal-name 表示映射其他角色的角色。
例 12.2. 示例
<jboss-web>
...
<security-role>
<role-name>Employee</role-name>
<principal-name>Support</principal-name>
<principal-name>Sales</principal-name>
</security-role>
...
</jboss-web>
从选项里提取角色并附加到传入的组里的 Role Mapping 提供者。它使用角色名称(键)的属性风格映射和用逗号隔开的角色列表(值)。
使用 SimplePrincipal 并转成具有不同主体名称的 SimplePrincipal 的主体映射提供者。
从数据库读取角色的 MappingProvider。
dsJndiName:用来将角色映射至用户的数据源的 JNDI 名称。rolesQuery:这个选项应该是等同于 "select RoleName from Roles where User=?" 的 prepared 语句,? 应用当前的主体名称替换。suspendResume:布尔值 - 在执行角色搜索时暂停且在之后恢复和当前线程关联的事务。transactionManagerJndiName:事务管理者的 JNDI 名称(默认为 java:/TransactionManager)
为使用 LDAP 服务器搜索角色的用户分配角色的映射提供者。
bindDN:用户和角色查询里用来绑定 LDAP 服务器的 DN。这个 DN 需要读取和搜索 baseCtxDN 和 rolesCtxDN 值上的权限。bindCredential:bindDN 的密码。如果指定了 jaasSecurityDomain,它可以被加密。rolesCtxDN:用于搜索用户角色的上下文的固定 DN。这不是实际角色的 DN,它是包含用户角色的对象所在的 DN。例如,在 Microsoft Active Directory 服务器里,它是用户帐号所在的 DN。roleAttributeID:包含授权角色的名称的 LDAP 属性。roleAttributeIsDN:roleAttributeID是否包含角色对象的全限定 DN。如果为 false,角色名将从上下文名称的roleNameAttributeId属性值里获取。某些目录模式,如 Microsoft Active Directory,要求这个属性的值为true。roleNameAttributeID:包含角色名称的roleCtxDN上下文里的属性的名称。如果roleAttributeIsDN属性为true,这个属性将被用来查找角色对象的 name 属性。parseRoleNameFromDN:指定查询返回的 DN 是否包含 roleNameAttributeID。如果设置为true,将检查 DN 里是否有 roleNameATtributeID,如果为false,将不会检查。这个标记可以提高 LDAP 查询的性能。roleFilter:用来定位和验证用户相关联的角色的搜索过滤器。从登录模块回调方法里获得的输入用户名或userDN将被替换过滤器里的{0}表达式。已验证的userDN将替换过滤器里的{1}表达式。匹配输入用户名的搜索过滤器示例是(member={0})。对应已验证的用户 DN 的例子是userDNis(member={1})。roleRecursion:对匹配内容进行角色搜索的递归层数。0表示禁用递归。searchTimeLimit:用户/角色搜索的超时时间(毫秒)。默认为 10000(10 秒)。searchScope:所使用的搜索作用域。
以下列格式从属性文件读取角色的 MappingProvider:username=role1,role2,...
rolesProperties:属性格式文件的名称。JBoss 变量的扩展可以使用格式${jboss.variable}。
从选项表里读取角色的简单 MappingProvider。Option 属性名称是分配角色的主体名称,属性值是分配给主体的用逗号隔开的角色名称。
例 12.3. 示例
<module-option name="JavaDuke" value="JBossAdmin,Admin"/> <module-option name="joe" value="Users"/>
检查模块并在映射上下文里定位主体名称以根据模块选项的 principalName + ".email" 创建属性电子邮件,并将其映射至给定的主体。
将属性从 LDAP 映射至主题。它的选项包括 LDAP JNDI 供应商支持的任何选项。
例 12.4. 标准属性的名称示例包括:
Context.INITIAL_CONTEXT_FACTORY = "java.naming.factory.initial" Context.SECURITY_PROTOCOL = "java.naming.security.protocol" Context.PROVIDER_URL = "java.naming.provider.url" Context.SECURITY_AUTHENTICATION = "java.naming.security.authentication"
bindDN:用户和角色查询里用来绑定 LDAP 服务器的 DN。这个 DN 需要读取和搜索 baseCtxDN 和 rolesCtxDN 值上的权限。bindCredential:bindDN 的密码。如果指定了 jaasSecurityDomain,它可以被加密。baseCtxDN:开始用户搜索所使用的上下文的固定标识名。baseFilter:用来定位要验证的用户的上下文的搜索过滤器。从登录模块回调方法里获得的输入用户名或userDN将替换至过滤器里的{0}表达式。这种替换行为来自标准的__DirContext.search(Name, String, Object[], SearchControls cons)__方法。搜索过滤器的一个常见例子是(uid={0})。searchTimeLimit:用户/角色搜索的超时时间(毫秒)。默认为 10000(10 秒)。attributeList:用逗号隔开的属性列表。例如,mail、cn、sn、employeeType、employeeNumber。jaasSecurityDomain:用于解密java.naming.security.principal的 JaasSecurityDomain。JaasSecurityDomain#encrypt64(byte[])方法返回密码的解密形式。org.jboss.security.plugins.PBEUtils也可以用来生成解密形式。

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.