JAAS:灵活的Java安全机制(1)

转载 2004年07月18日 21:11:00
 摘要:

  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对象,这些对象使用相关的安全基础结构进行验证操作。

jt-2003-1-14-image001.gif
图一 JAAS概览

  JAAS提供了一些LoginModule的参考实现代码,比如JndiLoginModule。开发人员也可以自己实现LoginModule接口,就象在我们例子中的RdbmsLonginModule。同时我们还会告诉你如何使用一个简单的配置文件来安装应用程序。

  为了满足可插接性,JAAS是可堆叠的。在单一登录的情况下,一组安全模块可以堆叠在一起,然后被其他的安全机制按照堆叠的顺序被调用。

  JAAS的实现者根据现在一些流行的安全结构模式和框架将JASS模型化。例如可堆叠的特性同Unix下的可堆叠验证模块(PAM,Pluggable Authentication Module)框架就非常相似。从事务的角度看,JAAS类似于双步提交(Two-Phase Commit,2PC)协议的行为。JAAS中安全配置的概念(包括策略文件(Police File)和许可(Permission))来自于J2SE 1.2。JAAS还从其他成熟的安全框架中借鉴了许多思想。

JAAS:灵活的Java安全机制

  Java Authentication Authorization Service(JAAS,Java验证和授权API)提供了灵活和可伸缩的机制来保证客户端或服务器端的Java程序。Java早期的...
  • oicqren
  • oicqren
  • 2004年11月24日 18:38
  • 1061

JAAS:灵活的Java安全机制(4)

使用JSP和关系数据库进行登录验证  现在我们希望将通过命令行调用的程序一直到Web应用程序中。由于Web应用程序与一般的应用程序的交互方式有区别不同,我们将不能使用JAAS提供的标准Callback...
  • JasonSeaver
  • JasonSeaver
  • 2004年07月18日 21:14
  • 1252

JAAS:灵活的Java安全机制(3)

 配置文件  上面我已经提到,JAAS的可扩展性来源于它能够进行动态配置,而配置信息通常是保存在文本。这些文本文件有很多个配置块构成,我们通常把这些配置块称作申请(Application)。每个申请对...
  • JasonSeaver
  • JasonSeaver
  • 2004年07月18日 21:14
  • 1148

JAAS:灵活的Java安全机制(2)

客户端和服务器端的JAAS  开发人员可以将JAAS应用到客户端和服务器端。在客户端使用JAAS很简单。在服务器端使用JAAS时情况要复杂一些。目前在应用服务器市场中的JAAS产品还不是很一致,使用J...
  • JasonSeaver
  • JasonSeaver
  • 2004年07月18日 21:13
  • 1253

JAAS:灵活的Java安全机制(入门级中文)

原文地址: http://www.javaworld.com/javaworld/jw-09-2002/jw-0913-jaas.htmlJAAS:灵活的Java安全机制        摘要:  Ja...
  • jwbecalm
  • jwbecalm
  • 2005年11月21日 23:19
  • 2221

什么是JAAS,以及灵活的Java安全机制

今天在论坛上看到JASS,不清楚是什么呢,网上找了一下,受益良多 Java Authentication Authorization Service(JAAS,Java验证和授权API)提供了灵活和可...
  • yinyuan1987
  • yinyuan1987
  • 2009年04月09日 21:32
  • 16264

Jaas原理及实现

JAAS是对JCE安全框架的重要补充,通过提供认证用户和确定用户授权来增强JAVA解决方案的动态安全性,使得资源能够得到很好得到保护和控制(JAAS使用动态的安全策略来定义权限,而不是将其静态的嵌入到...
  • Jesse621
  • Jesse621
  • 2015年01月30日 11:54
  • 2652

JAVA安全机制

1,java.policy设置文件访问权限:java.io.FilePermissioneg: grant codeBase "http://www.pepress.com.cn/-" {      ...
  • mingde_he
  • mingde_he
  • 2010年08月23日 23:31
  • 6197

JAVA 安全三部曲之一 JAAS编程指南(前篇)

 1          JAAS  Java Authentication Authorization Service(JAAS,Java验证和授权API)提供了灵活和可伸缩的机制来保证客户端或服务器...
  • hk2000c
  • hk2000c
  • 2006年03月23日 00:07
  • 11339

java安全 ——JAAS(Java 认证和授权服务)开发指南

以下内容转自: http://lyb520320.iteye.com/blog/720478 【0】README 1)本文翻译自:http://java.sun.com/developer/tec...
  • PacosonSWJTU
  • PacosonSWJTU
  • 2016年02月21日 18:53
  • 1735
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAAS:灵活的Java安全机制(1)
举报原因:
原因补充:

(最多只允许输入30个字)