14.4. 关于安全性扩展架构

JBoss EAP 的安全性扩展架构(Security Extension Architecture)由三个部分组成。这三个部分连接你的应用程序到底层的安全性架构,如 LDAP、Kerberos 或其他外部系统。
JAAS

这个架构的第一部分是 JAAS API。JAAS 是一个可插拔的框架,它为安全性架构和应用程序间提供了一个抽象层。

JAAS 里的主要实现是 org.jboss.security.plugins.JaasSecurityManager,它实现了 AuthenticationManager RealmMapping 接口。基于对应的组件部署描述符的 <security-domain> 元素,JaasSecurityManager 集成到了 EJB 和 web 容器层。
关于 JAAS 的更多信息,请参考 第 16.3 节 “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 和其他加密的用例。

进一步的信息

关于安全性架构的更多信息以及实践示例,请参考 第 14.5 节 “关于 Java 认证和授权服务(JAAS)”