快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
credentials):例如口令或私有密钥

Principal对象代表了Subject对象的身份。它们实现了 java.security.Principal和java.io.Serializable接口。在Subject类中,最重 要的方法是getName()。该方法返回一个身份名称。在Subject对象中包含了多 个Principal对象,因此它可以拥有多个名称。由于登录名称、身份证号和Email 地址都可以作为用户的身份标识,可见拥有多个身份名称的情况在实际应用中是 非常普遍的情况。

在上面提到的凭证并不是一个特定的类或借口,它可以是任何对象。凭证中 可以包含任何特定安全系统需要的验证信息,例如标签(ticket),密钥或口令 。Subject对象中维护着一组特定的私有和公有的凭证,这些凭证可以通过 getPrivateCredentials()和getPublicCredentials()方法获得。这些方法 通常在应用程序层中的安全子系统被调用。

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

时间:2010-12-20

验证:LoginContext

在应用程序层中,你可以使用LoginContext对象来验证Subject对象。 LoginContext对象同时体现了JAAS的动态可插入性(Dynamic Pluggability), 因为当你创建一个LoginContext的实例时,你需要指定一个配置。LoginContext 通常从一个文本文件中加载配置信息,这些配置信息告诉LoginContext对象在登 录时使用哪一个LoginModule对象。

下面列出了在LoginContext中经常使用的三个方法:

login () 进行登录操作。该方法激活了配置中制定的所有LoginModule对象 。如果成功,它将创建一个经过了验证的Subject对象;否则抛出 LoginException异常。

getSubject () 返回经过验证的Subject对象

logout () 注销Subject对象,删除与之相关的Principal对象和凭证

验证:LoginModule

LoginModule是调用特定验证机制的接口。J2EE 1.4中包含了下面几种 LoginModule的实现类:

JndiLoginModule 用于验证在JNDI中配置的目录服务

Krb5LoginModule 使用Kerberos协议进行验证

NTLoginModul 使用当前用户在NT中的用户信息进行验证

UnixLoginModule 使用当前用户在Unix中的用户信息进行验证

同上面这些模块绑定在一起的还有对应的Principal接口的实现类,例如 NTDomainPrincipal和UnixPrincipal。这些类在com.sun.security.auth包中。

LoginModule接口中包含了五个方法:

initialize () 当创建一LoginModule实例时会被构造函数调用

login () 进行验证

commit () 当LgoninContext对象接受所有LoginModule对象传回的结果后将 调用该方法。该方法将Principal对象和凭证赋给Subject对象。

abort () 当任何一个LoginModule对象验证失败时都会调用该方法。此时没 有任何Principal对象或凭证关联到Subject对象上。

logout () 删除与Subject对象关联的Principal对象和凭证。

在应用程序的代码中,程序员通常不会直接调用上面列出的方法,而是通过 LigonContext间接调用这些方法。

验证:CallbackHandler和Callback

CallbackHandler和Callback对象可以使LoginModule对象从系统和用户那里 收集必要的验证信息,同时独立于实际的收集信息时发生的交互过程。

JAAS在javax.sevurity.auth.callback包中包含了七个Callback的实现类和 两个CallbackHandler的实现类:ChoiceCallback、ConfirmationCallback、 LogcaleCallback、NameCallback、PasswordCallback、TextInputCallback、 TextOutputCallback、DialogCallbackHandler和TextCallBackHandler。 Callback接口只会在客户端会被使用到。我将在后面介绍如何编写你自己的 CallbackHandler类。

配置文件

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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号