快速业务通道

JAAS - 灵活的Java安全机制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
验证模块(PAM,Pluggable Authentication Module)框架就非常相似。从事务的角度看,JAAS类似于双步提交(Two-Phase Commit,2PC)协议的行为。JAAS中安全配置的概念(包括策略文件(Police File)和许可(Permission))来自于J2SE 1.2。JAAS还从其他成熟的安全框架 中借鉴了许多思想。

客户端和服务器端的JAAS

开发人员可以将JAAS应用到客户端和服务器端。在客户端使用JAAS很简单。 在服务器端使用JAAS时情况要复杂一些。目前在应用服务器市场中的JAAS产品还 不是很一致,使用JAAS的J2EE应用服务器有一些细微的差别。例如JBossSx使用 自己的结构,将JAAS集成到了一个更大的安全框架中;而虽然WebLogic 6.x也使 用了JAAS,安全框架却完全不一样。

现在你能够理解为什么我们需要从客户端和服务器端的角度来看JAAS了。我 们将在后面列出两种情况下的例子。为了使服务器端的例子程序更加简单,我们 使用了Resin应用服务器。

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

时间:2010-12-20

核心JAAS类

在使用JAAS之前,你首先需要安装JAAS。在J2SE 1.4中已经包括了JAAS,但 是在J2SE 1.3中没有。如果你希望使用J2SE 1.3,你可以从SUN的官方站点上下 载JAAS。当正确安装了JAAS后,你会在安装目录的lib目录下找到jaas.jar。你 需要将该路径加入Classpath中。(注:如果你安装了应用服务器,其中就已经 包括了JAAS,请阅读应用服务器的帮助文档以获得更详细的信息)。在Java安全 属性文件java.security中,你可以改变一些与JAAS相关的系统属性。该文件保 存在<jre_home>/lib/security目录中。

在应用程序中使用JAAS验证通常会涉及到以下几个步骤:

1. 创建一个LoginContext的实例。

2. 为了能够获得和处理验证信息,将一个CallBackHandler对象作为参数传 送给LoginContext。

3. 通过调用LoginContext的login()方法来进行验证。

4. 通过使用login()方法返回的Subject对象实现一些特殊的功能(假设登 录成功)。

下面是一个简单的例子:

LoginContext lc = new LoginContext("MyExample"); try { lc.login(); } catch (LoginException) { // Authentication failed. } // Authentication successful, we can now continue. // We can use the returned Subject if we like. Subject sub = lc.getSubject(); Subject.doAs(sub, new MyPrivilegedAction());

在运行这段代码时,后台进行了以下的工作。

1. 当初始化时,LoginContext对象首先在JAAS配置文件中找到MyExample项 ,然后更具该项的内容决定该加载哪个LoginModule对象(参见图二)。

2. 在登录时,LoginContext对象调用每个LoginModule对象的login()方法 。

3. 每个login()方法进行验证操作或获得一个CallbackHandle对象。

4. CallbackHandle对象通过使用一个或多个CallBack方法同用户进行交互, 获得用户输入。

5. 向一个新的Subject对象中填入验证信息。

我们将对代码作进一步的解释。但是在这之前,让我们先看代码中涉及到的 核心JAAS类和接口。这些类可以被分为三种类型:

普通类型 Subject,Principal,凭证

验证 LoginContext,LoginModule,CallBackHandler,Callback

授权 Policy,AuthPermission,PrivateCredentialPermission

上面列举的类和接口大多数都在javax.security.auth包中。在J2SE 1.4中, 还有一些接口的实现类在com.sun.security.auth包中。

普通类型:Subject,Principal,凭证

Subject类代表了一个验证实体,它可以是用户、管理员、Web服务,设备或 者其他的过程。该类包含了三中类型的安全信息:

身份(Identities):由一个或多个Principal对象表示

公共凭证(Public credentials):例如名称或公共秘钥

私有凭证(Private

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号