一. WebLogic 安全框架

下图显示 WebLogic 安全框架的高级视图。该框架由weblogic.security.service 包中的接口、类和异常组成。

1-1 WebLogic 安全服务体系结构

 

Ø  组件:

分为:访问者,工具,以及weblogic安全服务。

访问者就是 客户端的应用程序,bea的一些其他的产品,还有资源的容器等等

工具:weblogi.security的接口,类和异常,weblogic本身的容器,还有一些协议处理程序

Weblogic的安全服务:包括welogic的安全框架,由安全框架通过安全服务提供程序的接口去访问底层的安全提供程序。

Weblogic的安全服务包括有:规则验证,授权管理,审计,角色管理,证书管理,特征服务等等。

安全框架下也有分类的模块:身份验证模块,授权模块,审计模块,角色映射模块,证书映射模块,特征模块。

安全提供程序是向应用程序提供安全服务以保护 WebLogic 资源的模块。包括:身份验证,标识声明,委托人验证,授权,仲裁,角色映射,审核,凭据映射,证书查找和验证,密钥库,领域适配器提供程序等。

 

Ø  过程:

客户端的程序通过weblogicsecurity的类或者接口去调用weblogic的安全服务,或者通过weblogic本身容器的一些功能和配置去获得weblogic的安全服务;

Bea其他的一些产品则可以通过weblogic的本身的容器或者是协议处理程序去调用并获得weblogic的安全服务;

一些其他的资源容器也可以直接通过weblogic的安全框架去调用底层的安全提供程序。

 

Ø  功能:

Weblogic的这种架构能够为通过 Web 获得的应用程序提供一个唯一的、安全的基础。利用 WebLogic Server 的新安全功能,企业将受益于一个全面、灵活的安全基础结构,WebLogic 安全性可单独用于确保 WebLogic Server 应用程序安全,或用作企业范围的安全管理系统的一部分。

这里简要介绍一下webloigc安全的一些功能:

§  全面且基于标准的设计。

§  WebLogic Server 所承载应用程序的端对端安全,从主机到 Web 浏览器。

§  WebLogic Server 安全相集成的旧式安全方案,使公司可以充分利用现有投资。

§  集成到灵活统一的系统中的安全工具,使整个企业的安全管理更轻松。

§  通过公司业务规则到安全策略的映射,更容易自定义符合业务要求的应用程序安全。

§  将安全策略应用到 J2EE 和应用程序定义资源的一致模型。

§  轻松更新安全策略。本版本包括安全策略创建过程的可用性增强功能,以及控制 WebLogic 资源访问的其他表达式。

§  轻松适应自定义安全解决方案。

§  体系结构模块化,以便安全基础结构可以随时间变化,从而满足特定公司的要求。

§  支持配置多个安全提供程序,是转换方案或升级途径的一部分。

§  安全细节与应用程序基础结构分开,更容易随要求变化对安全进行部署、管理、维护和修改。

§  在默认情况下,WebLogic 安全提供程序为您提供现成的工作安全方案。本版本还支持其他身份验证存储,例如数据库以及 Windows NT 帐户信息。

§  使用自定义安全提供程序自定义安全方案

§  通过 WebLogic Server 管理控制台对安全规则、安全策略和安全提供程序进行统一管理。

§  支持 J2EE 标准安全技术,包括 Java 身份验证和授权服务(Java Authentication and Authorization Service,简称 JAAS)、Java 安全套接口扩展(Java Secure Sockets Extensions,简称 JSSE)、Java 密码系统扩展(Java Cryptography Extensions,简称 JCE)和 Java 容器授权合同(Java Authorization Contract for Containers,简称 JACC)。

§  Web Service 安全基础,包括对 SAML 的支持。

§  使 WebLogic Server 能够通过网站、Web 应用程序和桌面客户端进行单一登录(single sign-on,简称 SSO)的功能。

§  管理公匙的框架,其中包括证书查找、确认、验证、撤销以及证书注册。

§  安全套接口层 (SSL) 协议和 LDAP 身份验证提供程序的性能得到改进。

 

二.安全领域简介

安全域由用于保护 WebLogic 资源的机制组成。每个安全领域由一组配置的安全提供程序、用户、组、安全角色和安全策略(请参阅下图2-1)组成。用户必须在安全领域中进行定义,以便可以访问属于该领域的任意 WebLogic 资源。当用户尝试访问特定 WebLogic 资源时,WebLogic Server 通过以下方法尝试验证用户身份并向用户授权。

2-1 WebLogic Server 安全领域

 

 

Ø  用户

用户是可以在安全领域(如 myrealm)中进行身份验证的实体(请参阅 2-1)。用户可以是个人或软件实体,或者是其他 WebLogic Server 实例。

如果用户要访问 WebLogic Server,需要提供证明材料(例如密码或数字证书),特别是通过 JAAS LoginModule 向安全领域中配置的身份验证提供程序提供。

Weblogic是如何定义用户密码的:在使用 WebLogic 身份验证提供程序并定义用户时,WebLogic Server 散列所有的密码。随后,WebLogic Server 收到客户端请求时,将散列客户端提供的密码,然后 WebLogic Server 将其与已散列的密码相比较以查看是否匹配。

:在一个安全域中,所有用户名和组必须是唯一的。

 

Ø 

组是进行逻辑排序的用户集(请参阅 2-1)。通常,组成员具有某些相同之处。

管理组比单独管理大量用户效率更高。在一个安全领域中,所有用户名和组必须是唯一的。

 

Ø  安全角色

安全角色是根据特定条件授予用户或组的权限(请参阅 2-1)。安全角色与组相似,可让您同时限制多个用户对 WebLogic 资源的访问权限。但是,与组不同的是:

§  安全角色是根据用户名、组成员或时间等条件动态地进行计算并授予给用户或组的。

§  安全角色可以作用于 WebLogic Server 域中单个应用程序内的特定 WebLogic 资源(而组是始终作用于整个 WebLogic Server 域的)。

 

 

Ø  安全策略

安全策略是 WebLogic 资源和一个或多个用户、组或安全角色之间的关联。

安全策略保护 WebLogic 资源,以防未经授权的访问。策略条件就是创建安全策略的条件。WebLogic Server 提供一组默认的策略条件。WebLogic Server 包括访问“HTTP Servlet 请求和会话特性及 EJB 方法参数的策略条件。日期和时间策略条件包括在策略编辑器中。

 

Ø  默认安全程序提供商

 

提供商类型

特性

验证(Authentication

这是一个默认的安全提供商,它允许用户使用基于用户名和密码的验证,基于证书的服务器之二姐验证和基于证书的HTTPS验证。验证提供商为服务器提供一个指向特定JAAS loginmoduleJASS登陆模块)的JAAS配置信息

身份确认(Identity Assertion

该安全提供商将外部验证令牌映射成用户名,它属于验证提供商的一部分

授权(Authorization

它决定验证过的subject(主体)是否可以访问一定范围内的资源

裁决(Adjudication

当配置有多个授权提供商时,它记录下所有的决策并最后裁决由谁授权。如果只有一个授权提供商,则没有必要使用他

审计(Audit

它收集和存储安全日志

角色(权限)映射器(Role Mapper

subject(主体)验证通过后,当它试图访问某些资源时,由角色映射器决定哪些角色作用域那个subject,并将它们存储于subject对象中

证书映射器(Credential Mapper

必要时,它为验证通过的subject提供旧系统的证书

 

²  什么是安全提供程序数据库?

安全提供程序是向应用程序提供安全服务以保护 WebLogic 资源的模块。包括:身份验证,标识声明,委托人验证,授权,仲裁,角色映射,审核,凭据映射,证书查找和验证,密钥库,领域适配器提供程序等。

安全提供程序数据库包含某些类型的安全提供程序,这些程序是用于提供安全服务的用户、组、安全角色、安全策略和凭据(请参阅 2-1)。

安全提供程序数据库可以是嵌入式 LDAP 服务器、属性文件或已经在使用的生产质量、客户提供的数据库。

应当在第一次使用安全提供程序时初始化安全提供程序数据库。可以在下列情况下执行此初始化:

§  WebLogic Server 实例引导时。

§  在调用安全提供程序的其中一个 MBean 时。

²  安全领域和安全提供程序数据库

如果在同一安全领域中配置了多个相同类型的安全提供程序,则这些安全提供程序可以使用同一个安全提供程序数据库。

注意:

如果在两个不同安全领域中配置了两个相同类型的 WebLogic 安全提供程序(或两个示例安全提供程序),则每个安全提供程序将使用各自的安全提供程序数据库。一次只能有一个安全领域处于活动状态。

²  嵌入式 LDAP 服务器

嵌入式 LDAP 服务器用作为 WebLogic 安全提供程序存储用户、组、安全角色和安全策略的数据库。嵌入式 LDAP 服务器是完整的 LDAP 服务器。它支持以下访问功能和存储功能:

§  访问和修改 LDAP 服务器中的条目

§  使用 LDAP 浏览器将安全数据导入 LDAP 服务器和从 LDAP 服务器导出安全数据。

§  使用 WebLogic 安全提供程序进行读写访问。  

2-1 显示每个 WebLogic 安全提供程序如何使用嵌入式 LDAP 服务器。

 

2-1 嵌入式 LDAP 服务器的用法WebLogic 安全提供程序

嵌入式 LDAP 服务器用法

身份验证

存储用户和组信息。

标识声明

存储用户和组信息。

授权

存储安全角色和安全策略。

仲裁

无。

角色映射

通过获取授予给定 WebLogic 资源请求者的一组计算角色来支持动态角色关联。

审核

无。

凭据映射

存储用户名-密码凭据映射信息。

证书注册表

存储注册的结束证书。

 

Weblogic默认的安全提供商使用嵌入式LDAP服务器来保证数据的安全。这些数据存储在每一个本地服务器上,其中包括用户,组,角色(权限),访问控制策略以及安全证书信息等。

无论什么时候启动weblogic server,它总是把所有的内部文件放置在与服务器实例相关的某一特定目录下。默认状态下,服务器目录就放在启动它的目录上,并且与服务器实例有相同的名字(如:user_projects/mydomain/myserver)。在这个服务器目录下,有一个名为ldap的子目录,LDAP服务器的文件就放在这里。以下的表反映了整个目录结构以及LDAP服务器的目录内容。如果因为LDAP数据损坏使管理服务器无法启动,可以用备份目录下的压缩文件来恢复ldapfiles目录的内容,或者删除整个ldap目录,并在被管理的服务器启动和链接到管理服务器的时候重建。

目录

存储信息

backup

ldapfiles目录中每天一次创建的压缩备份文件

conf

在服务器第一次启动时生成的配置文件

ldapfiles

LDAP服务器数据文件

log

LDAP服务器日志文件

replicadata

被管理服务器的复制数据

 

Ldapfiles目录下包含7个数据文件。Embeddedl-dap.tran,embeddedldap.trposembeddedldap.twpos是事务处理的跟踪记录文件,如果ldap服务器出现了内部问题,这些文件即使删除也不会丢失数据。Embeddedldap.data是最主要的数据文件,所有的用户,组,角色和策略规则都存储在这里。Embeddedldap.delete是关于被删条目的信息文件,embeddedldap.index是索引文件,而embeddedldap.lok则是用于确保ldap信息访问连续性的文件。

. 安全服务提供程序接口 (SSPI)

WebLogic Server 中的安全基于一组安全服务提供程序接口(Security Service Provider Interface,简称 SSPI)。开发人员和第三方供应商可以使用 SSPI 开发适合 WebLogic Server 环境的安全提供程序。SSPI 可用于仲裁、审核、身份验证、授权、凭据映射、标识声明、角色映射及证书查找和验证。

注意:

WebLogic Server 中,一般不赞成使用密钥库提供程序的 SSPI。而是使用 Java 密钥库 (JKS)

Ø  如何配置用于生产环境的密钥库?

默认情况下,WebLogic Server 配置有两个密钥库:

§  DemoIdentity.jks - 包含 WebLogic Server 的演示私钥。此密钥库包含 WebLogic Server 的标识。

§  DemoTrust.jks - 包含来自 WL_HOME/server/lib/DemoTrust.jks 的可信证书颁发机构和 JDK cacerts 密钥库。此密钥库可为 WebLogic Server 建立信任。

这些密钥库位于 WL_HOME/server/lib 目录中。对于测试和开发来说,密钥库配置是完全的。但是,请不要在生产环境中使用此演示密钥库。由于演示密钥库中的数字证书和可信 CA 证书是由 WebLogic Server 演示证书颁发机构签名的,所以使用演示密钥库的 WebLogic Server 安装将信任任何同样使用演示密钥库的 WebLogic Server 安装。需要创建只在您的安装之间互相信任的安全环境。

Ø  要配置生产环境中使用的密钥库,请执行以下操作:

1         从一家著名的证书颁发机构(如 Verisign, Inc. Entrust.net)获取私钥和数字证书。

1         创建标识和信任密钥库。

1         将私钥和可信 CA 加载到标识和信任密钥库中。

1         使用 WebLogic Server 管理控制台可配置标识和信任密钥库。

也可以使用 WebLogic 脚本工具或 Java 管理扩展(Java Management Extensions,简称 JMXAPI 创建新的安全配置。

 

四.安全提供程序和安全领域

所有安全提供程序均存在于安全领域的上下文中。如果使用的不是 WebLogic Server 6.x 之前的版本,则现成的定义为默认领域的 WebLogic Server 安全领域(即称为 myrealm的活动安全领域)包含图4-1中显示的 WebLogic 安全提供程序。

注意:

如果是从 6.x 版本升级到本版本,则现成的体验始于兼容性领域(最初定义为默认领域)允许您使用现有配置。由于已经取消 6.x 模型,因此您需要将安全领域升级到在本版本的 WebLogic Server 中可用的安全模型。

4-1 安全领域中的 WebLogic 安全提供程序

 

由于安全提供程序是插入 WebLogic Server 安全领域的单个模块或组件,因此您可以毫不费力地添加、替换或删除安全提供程序。可以使用 WebLogic 安全提供程序、自己开发的自定义安全提供程序、从第三方安全供应商获得的安全提供程序或这三种提供程序的组合来创建功能齐全的安全领域。但是,图 4-1 还表明,安全领域需要某些类型的安全提供程序才能正常运行。表 4-1 概括了必须为完全运行的安全领域配置哪些安全提供程序。

 

4-1 安全领域中的安全提供程序类型

是否必需?

身份验证提供程序

标识声明提供程序

是,如果使用的是边界身份验证。

委托人验证提供程序

授权提供程序

仲裁提供程序

是,如果配置了多个授权提供程序。

角色映射提供程序

审核提供程序

凭据映射提供程序

证书查找和验证提供程序

密钥库提供程序

 

 

Ø  Java 身份验证和授权服务 (JAAS)

无论客户端是应用程序、AppletEnterprise JavaBean (EJB) 还是需要身份验证的 ServletWebLogic Server 都可使用 Java 身份验证和授权服务 (JAAS) 类对客户端进行可靠安全的身份验证。JAAS 实现了 Java 版的可插入身份验证模块(Pluggable Authentication Module,简称 PAM)框架,该框架使应用程序可以独立于底层身份验证技术。因此,使用 PAM 框架可以使用新的或更新后的身份验证技术,而无需对应用程序进行修改。

²  JAAS LoginModule

LoginModule 是进行身份验证的工具:所有 LoginModule 都负责在安全领域内对用户进行身份验证,并负责使用必要的委托人(用户/组)填充主题。

²   JAAS的控制标志

如果在安全领域中配置有多个身份验证提供程序,则每个身份验证提供程序的 LoginModule 都会将委托人存储在同一主题中。简单的举一个例子,如果通过一个身份验证提供程序的 LoginModule 将一个名为“Joe” WebLogic Server 用户的委托人添加到主题中,那么安全领域中的任何其他身份验证提供程序遇到“Joe”时都应引用同一个人。

如果安全领域配置有多个身份验证提供程序,则验证器提供程序上的控制标志特性将决定身份验证提供程序的执行顺序。控制标志特性的值如下:

§  REQUIRED – LoginModule 必须成功。即使失败,身份验证也会继续向下处理已配置的身份验证提供程序的 LoginModules 列表。此设置为默认设置。

§  REQUISITE – LoginModule 必须成功。如果配置了其他身份验证提供程序且此 LoginModule 成功,则身份验证继续向下处理 LoginModules 的列表。否则,控制权将返回到应用程序。

§  SUFFICIEN – LoginModule 不需要成功。如果实际上成功了,则控制权返回到应用程序。如果失败且配置了其他身份验证提供程序,则身份验证过程将继续向下处理 LoginModule 列表。

§  OPTIONAL – 允许用户通过或不通过此身份验证提供程序的身份验证测试。但是,如果安全领域中配置的所有身份验证提供程序都将 JAAS 控制标志设置为 OPTIONAL,用户必须通过其中一个配置的提供程序的身份验证测试。

 

Ø  身份验证过程

4-2 显示胖客户端登录的身份验证过程。JAAS 在服务器上运行以执行登录。即使在瘦客户端登录的情况下(即,Web 浏览器客户端),JAAS 仍然在服务器上运行。

4-2 身份验证过程

 

注意:

只有自定义身份验证提供程序的开发人员会与此 JAAS 过程直接相关。客户端应用程序可以使用 JNDI 初始上下文或 JAAS 来启动用户名和密码的传递。

客户端应用程序通过用户名/密码去访问weblogic server,这时候weblogic server会通过jaas登陆到loginModule上以验证用户的用户名和密码,来建立信任,然后返回按照jaas要求的填充有委托人的主体给客户端应用程序,这是一个交互的过程。

在成功证明调用者标识之后,建立身份验证上下文,这将允许对于其他实体通过已标识用户或系统的身份验证。

 

Ø  标识声明过程

标识声明提供程序用作边界身份验证过程的一部分。边界身份验证是验证应用程序服务器域以外的远程用户标识的过程。

²  如何完成边界身份验证?

       边界身份验证通常由远程用户指定用来执行验证的一个已声明的标识

       和某种形式的相应证明材料来完成。

²  WebLogic Server 如何支持边界身份验证?

      WebLogic Server 的设计目的在于通过支持标识声明将单一登录概念一直扩展到边界(请参阅图4-3)。作为 WebLogic 安全框架的关键部分,标识声明的概念允许 WebLogic Server 使用由边界身份验证方案提供的身份验证机制来实现此功能,这些方案包括安全声明标记语言(Security Assertion Markup Language,简称 SAML)、简单且受保护的 GSS-API 协商机制 (SPNEGO) 或增强协议,如通用安全互操作性(Common Secure Interoperability,简称 CSIv2

4-3边界身份验证

 

 

4-4 边界身份验证过程

 

 

4-4 还显示,边界身份验证需要的组件与身份验证过程所需相同,但是还要添加标识声明提供程序。

 

Ø  委托人验证过程

如图 4-5 所示,用户尝试使用用户名/密码组合登录到系统。WebLogic Server 通过调用配置的身份验证提供程序的 LoginModule 建立信任,LoginModule 验证用户的用户名和密码并返回按照 JAAS 要求填充有委托人的主题。

4-5 委托人验证过程

 

 

Ø  授权过程

4-6 说明授权提供程序(以及关联的仲裁和角色映射提供程序)在授权过程中如何与 WebLogic 安全框架交互。

4-6 授权过程

 

 

Ø  仲裁过程

如果配置了多个授权提供程序(请参阅图 4-6),则需要仲裁提供程序标记多个访问决策并实施裁决。当配置有多个授权提供商时,它记录下所有的决策并最后裁决由谁授权。仲裁提供程序将 TRUE FALSE 裁决返回给授权提供程序,授权提供程序通过 WebLogic 安全框架再将裁决转发给资源容器。

§  如果该决策为 TRUE,资源容器会将请求发送到受保护的 WebLogic 资源。

§  如果该决策为 FALSE,则资源容器会引发安全异常,指出该请求者无权对受保护的 WebLogic 资源执行所请求的访问。

 

Ø  角色映射过程

WebLogic 安全框架调用每个角色映射提供程序,它们作为授权决策的一部分为安全领域配置。

4-7 显示角色映射提供程序如何与 WebLogic 安全框架交互来创建动态角色关联。

4-7 角色映射过程

 

 

Ø  审核过程

4-8 显示审核提供程序如何与 WebLogic 安全框架和其他类型的安全提供程序(以身份验证提供程序为例)交互。

4-8 审核过程

 

 

Ø  凭据映射过程

4-9 说明凭据映射提供程序在凭据映射过程中如何与 WebLogic 安全框架交互。

4-9 凭据映射过程

 

 

Ø  证书查找和验证过程

在证书查找和验证过程中,证书路径生成器、证书路径验证器以及证书查找和验证 (CLV) 框架全部交互。

²  生成证书链的过程如下:

1         通过 WebLogic Web Service 或应用程序代码向 CLV 框架传递证书链和证书路径选择器(结束证书、主题 DN、发行方 DN 及序列号和/或主题关键字标识符)。

2  CLV 框架调用证书路径生成器来查找并验证证书链。使用 Web Service 时,CLV 框架将服务器的可信 CA 列表传递给提供程序。应用程序代码将可信 CA 列表传递给提供程序。

3  如果找到证书链且它是有效的,则 CLV 框架将调用安全领域中配置的任何证书路径验证器(按其配置的顺序)。

²  仅当证书路径生成器和所有配置的证书路径验证器对证书链验证成功时,证书链才有效。

1         CLV 框架将证书链返回给请求方。

2  处理将继续。

²  验证证书链的过程如下:

1         通过 SSL 协议、WebLogic Web Service 或应用程序代码向 CLV 框架传递证书链和证书路径选择器(结束证书、主题 DN、发行方 DN 及序列号和/或主题关键字标识符)。

2  CLV 框架确保按顺序调用证书链并且证书链中每个证书都签署下一个证书。

3  如果证书链有效,CLV 框架将调用安全领域中配置的任何证书路径验证器(按其配置的顺序)。

²  仅当所有配置的证书路径验证器对证书链验证成功时,证书链才有效。如果出现错误,验证将停止。

1         CLV 框架将证书链返回给请求方。

2  处理将继续。

Ø  领域适配器提供程序

通过允许将现有的 6.x 安全领域与本版本的 WebLogic Server 中的安全功能结合使用,领域适配器提供程序提供与 6.x WebLogic 安全领域的向后兼容性。领域适配器提供程序将 WebLogic Server 6.x 中使用的领域 API (weblogic.security.acl) 映射到本版本的 WebLogic Server 中使用的 API。图 4-10 显示一个兼容性领域以及支持的安全提供程序类型。

4-10 兼容性领域

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐