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)”。