用于跨域启用集中式身份验证的面向服务架构时间:2009-05-13 19:57来源:dev2dev 作者:Som Sengupta, Venkat 点击:65次用于跨域启用集中式身份验证的面向服务架构 时间:2005-02-28 作者: Som Sengupta, Venkatakrishnan Padmanabhan 浏览次数: 本文关键字: 身份验证 在开发周期中,往往要到后期才会考虑安全性的问题。结果,许多安全实现具有以下问题: 应用程序的开发人员 在开发周期中,往往要到后期才会考虑安全性的问题。结果,许多安全实现具有以下问题:
应用程序的开发人员过多地参与安全性方面的决策。但是实际上,安全性是一个专门的领域,最好由安全管理员进行管理。 把安全逻辑开发和部署为应用逻辑的一部分。因此,当管理员需要更新安全逻辑时,同时必须更新并重新部署应用逻辑,这导致了应用程序开发周期不连续。 安全管理是分散式的。 跨应用程序启用单点登录需要投入可观的工作量。 本文提出了一个用于跨域启用集中式身份验证的面向服务架构(SOA)。这种方法具有以下优势:
使安全逻辑与应用逻辑相互分离,使安全管理员能够在修改安全逻辑的同时,无需更新应用逻辑。 提供集中式的安全管理。 跨应用程序启用单点登录。 提供一个可以在企业范围内为其他业务应用程序所共享的安全基础架构。 这种方法基于WebLogic Server 8.1 SP3。
基于SOA的方法概览 基于面向服务的架构(service-oriented architecture ,SOA)的方法使用网关作为验证用户身份的中心点。网关使用开放式标准,并通过单点登录的功能,支持对各种应用程序的无缝访问。通过授权已验证的用户访问所有参与的应用程序,而不需要用户重新输入用户凭证,单点登录简化了企业内的身份验证流程。 这种方法具有以下优点:
具体化身份验证服务 对于用于验证用户身份的身份验证服务,其维护是独立于应用程序代码的,而且身份验证信息被保存在LDAP目录中。 要实现域间的身份验证,您可以使用WebLogic LDAP身份验证提供程序,并使用您首选的LDAP配置它。使用外部LDAP支持安全管理员跨多个域进行集中式的用户管理。 把身份验证GUI转移到表示层 所提出的方法确保: o 与登录有关的GUI独立于身份验证服务域。 o 用于呈现登录GUI的资源在表示层中提供。 o 对GUI和身份验证服务进行的修改相互独立。 支持基于安全性声明标记语言(Security Assertion Markup Language,SAML)的安全身份传播 跨应用程序的单点登录是使用SAML——一个用于交换安全性信息的、基于XML的框架——来实现的。 支持多个安全性令牌的同时无需修改应用程序 这个方法和基于SAML的安全性令牌不相关。通过配置不同的Credential Mapper和Identity Asserter对(稍后会说明),可以支持其他的安全性令牌类型,而无需修改应用程序。 该方法最小化了部署身份验证服务所需的定制代码量。任何熟悉以下任务的用户都可以轻松配置该方法:创建WebLogic域,配置Web应用程序和利用WebLogic 安全基础[1]。
身份验证网关架构 身份验证网关架构基于周边身份验证(perimeter authentication)的概念,这个概念支持单点登录。周边身份验证是这样一个机制:它基于外部身份验证实体生成的安全性令牌建立用户身份。 身份验证网关架构,包括:
使用LDAP的集中式用户管理。 使用下列三种组件的基于SAML的身份声明:Credential Mapper、HttpProxyServlet和Identity Asserter (“身份验证网关架构的组件”一节将详细讲述这些组件)。 具体化以门户Web应用程序为宿主的登录页面。 图1. 身份验证网关架构 如上图所示,安全域(security domain)功能是作为外部的身份验证实体。安全域担任“身份验证服务”的宿主,提供安全网关给应用程序域。用户在被允许访问应用程序域中的应用程序之前,必须通过安全域的身份验证。
下面给出了流程流的描述。(稍后“身份验证网关架构的组件”一节将详细描述图中的每个组件。)
用户登录到系统中。安全域代理Web应用程序接收基于FORM的请求。 代理Web应用程序把用户证书传递给身份验证服务提供程序。 接下来,身份验证服务提供程序使用LDAP用户管理系统验证用户凭证。 验证完毕之后,身份验证服务提供程序生成一个已验证的ID,并将其传递给代理Web应用程序。 servlet过滤器把已验证的ID传递给Credential Mapper。 接下来,Credential Mapper生成一个代表已验证用户的安全性令牌,然后把它传回给代理Web应用程序。 servlet过滤器把安全性令牌附加到HTTP请求,然后把请求发送到应用程序域。 应用程序域中的WebLogic Security Framework把安全性令牌分派给匹配的Identity Asserter。用于验证安全性令牌并将其转换为用户身份的机制称为身份声明(identity assertion),由Identity Asserter(WebLogic Security Framework的一个组件)进行处理。要启用身份声明,您必须更新Web应用程序的部署描述符,把 auth-method 设置为 CLIENT-CERT Identity Asserter验证令牌,如果验证成功,就把它映射到WebLogic用户,并把它转发给身份验证服务提供程序。 接下来,身份验证服务提供程序使用LDAP用户管理系统验证用户的存在。 验证完毕之后,身份验证服务提供程序通知Identity Asserter用户已经通过身份验证。 Identity Asserter把已验证的身份传回给Web应用程序。因此,无需重新进行身份验证就可以建立一个HTTP会话。 正如流程中描述的那样,用户身份验证与应用程序没有耦合,而且被具体化。
|