JAAS - 灵活的Java安全机制 - 编程入门网
JAAS - 灵活的Java安全机制时间:2010-12-20摘要: Java Authentication Authorization Service(JAAS,Java验证和授权API )提供了灵活和可伸缩的机制来保证客户端或服务器端的Java程序。Java早期的 安全框架强调的是通过验证代码的来源和作者,保护用户避免受到下载下来的代 码的攻击。JAAS强调的是通过验证谁在运行代码以及他/她的权限来保护系统面 受用户的攻击。它让你能够将一些标准的安全机制,例如Solaris NIS(网络信 息服务)、Windows NT、LDAP(轻量目录存取协议),Kerberos等通过一种通用 的,可配置的方式集成到系统中。本文首先向你介绍JAAS验证中的一些核心部分 ,然后通过例子向你展示如何开发登录模块。 你是否曾经需要为一个应用程序实现登录模块呢?如果你是一个比较有经验 的程序员,相信你这样的工作做过很多次,而且每次都不完全一样。你有可能把 你的登录模块建立在Oracle数据库的基础上,也有可能使用的是NT的用户验证, 或者使用的是LDAP目录。如果有一种方法可以在不改变应用程序级的代码的基础 上支持上面提到的所有这一些安全机制,对于程序员来说一定是一件幸运的事。 现在你可以使用JAAS实现上面的目标。JAAS是一个比较新的的Java API。在 J2SE 1.3中,它是一个扩展包;在J2SE 1.4中变成了一个核心包。在本文中,我 们将介绍JAAS的一些核心概念,然后通过例子说明如何将JAAS应用到实际的程序 中。本文的例子是根据我们一个基于Web的Java应用程序进行改编的,在这个例 子中,我们使用了关系数据库保存用户的登录信息。由于使用了JAAS,我们实现 了一个健壮而灵活的登录和身份验证模块。 Java验证和授权:概论 在JAAS出现以前,Java的安全模型是为了满足跨平台的网络应用程序的需要 而设计的。在Java早期版本中,Java通常是作为远程代码被使用,例如Applet, 。因此最初的安全模型把注意力放在通过验证代码的来源来保护用户上。早期的 Java安全机制中包含的概念,如SercurityManager,沙箱概念,代码签名,策略 文件,多是为了保护用户。 JAAS的出现反映了Java的演变。传统的服务器/客户端程序需要实现登录和 存取控制,JAAS通过对运行程序的用户的进行验证,从而达到保护系统的目的。 虽然JAAS同时具有验证和授权的能力,在这篇文章中,我们主要介绍验证功能。 通过在应用程序和底层的验证和授权机制之间加入一个抽象层,JAAS可以简 化涉及到Java Security包的程序开发。抽象层独立于平台的特性使开发人员可 以使用各种不同的安全机制,而且不用修改应用程序级的代码。和其他Java Security API相似,JAAS通过一个可扩展的框架:服务提供者接口(Service Provider Interface,SPI)来保证程序独立于安全机制。服务提供者接口是由 一组抽象类和接口组成的。图一中给出了JAAS程序的整体框架图。应用程序级的 代码主要处理LoginContext。在LoginContext下面是一组动态配置的 LoginModules。LoginModule使用正确的安全机制进行验证。 图一给出了JAAS的概览。应用程序层的代码只需要和LoginContext打交道。 在LoginContext之下是一组动态配置的LoginModule对象,这些对象使用相关的 安全基础结构进行验证操作。 图一 JAAS概览 JAAS提供了一些LoginModule的参考实现代码,比如JndiLoginModule。开发 人员也可以自己实现LoginModule接口,就象在我们例子中的RdbmsLonginModule 。同时我们还会告诉你如何使用一个简单的配置文件来安装应用程序。 为了满足可插接性,JAAS是可堆叠的。在单一登录的情况下,一组安全模块 可以堆叠在一起,然后被其他的安全机制按照堆叠的顺序被调用。 JAAS的实现者根据现在一些流行的安全结构模式和框架将JASS模型化。例如 可堆叠的特性同Unix下的可堆叠 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |