第 17 章 应用程序里基于角色的安全性
17.1. 关于安全性扩展架构 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
JBoss EAP 6 的安全性扩展架构(Security Extension Architecture)由三个部分组成。这三个部分连接你的应用程序到底层的安全性架构,如 LDAP、Kerberos 或其他外部系统。
JAAS
这个架构的第一部分是 JAAS API。JAAS 是一个可插拔的框架,它为安全性架构和应用程序间提供了一个抽象层。
JAAS 里的主要实现是
org.jboss.security.plugins.JaasSecurityManager,它实现了 AuthenticationManager 和 RealmMapping 接口。基于对应的组件部署描述符的 <security-domain> 元素,JaasSecurityManager 集成到了 EJB 和 web 容器层。
关于 JAAS 的更多信息,请参考 第 17.2 节 “Java 认证和授权服务(JAAS)”。
JaasSecurityManagerService MBean
JaasSecurityManagerService MBean 服务管理安全性管理者。虽然它的名字以 Jaas 开始,但它处理的安全性管理者并不需要在其实现里使用 JAAS。这个名字反映的事实是,默认的安全性管理者实现是 JaasSecurityManager。
JaasSecurityManagerService 的主要角色是具体化安全性管理者实现。你可以通过对 AuthenticationManager 和 RealmMapping 接口的其他实现来修改安全性管理者实现。
JaasSecurityManagerService 的第二个基础角色是提供一个 JNDI javax.naming.spi.ObjectFactory 实现以允许对 JNDI 名称和安全性管理者实现间绑定的简单的无代码管理。要启用安全性,可以通过 <security-domain> 部署描述符元素简化安全性管理者实现的 JNDI 名称。
当你指定一个 JNDI 名称时,object-binding 必须已经存在。要简化 JNDI 名称和安全性管理者间绑定的设置,
JaasSecurityManagerService 绑定了一个 next naming system reference,提名自己为 java:/jaas 下的 JNDI ObjectFactory。这允许了 java:/jaas/XYZ 形式的命名来作为 <security-domain> 元素的值,且 XYZ 安全域的安全管理者实例按需要创建,这是通过创建一个 SecurityManagerClassName 属性指定的类的实例,并使用采用安全域的名称的构造器来完成的。
注意
你不需要在你的部署描述符里包含
java:/jaas 前缀。虽然为了向后的兼容性,你可以这样做,但它会被忽略。
JaasSecurityDomain MBean
org.jboss.security.plugins.JaasSecurityDomain 是 JaasSecurityManager 的一个扩展,它添加了 KeyStore、 KeyManagerFactory 和 TrustManagerFactory 以支持 SSL 和其他加密的用例。
进一步的信息
关于安全性架构的更多信息以及实践示例,请参考 第 17.3 节 “关于 Java 认证和授权服务(JAAS)”。