JAAS - 灵活的Java安全机制 - 编程入门网
申请对应了一个或多个特定的LoginModule对象 。
当你的代码构造一个LoginContext对象时,你需要把配置文件中申请的名称 传递给它。LoginContext将会根据申请中的信息决定激活哪些LoginModule对象 ,按照什么顺序激活以及使用什么规则激活。 配置文件的结构如下所示:
下面是一个名称为Sample的申请
JAAS - 灵活的Java安全机制(4)时间:2010-12-20上面这个简单的申请指定了LoginContext对象应该使用NTLoginModule进行验 证。类的名称在ModuleClass中被指定。Flag控制当申请中包含了多个 LoginModule时进行登录时的行为:Required、Sufficient、Requisite和 Optional。最常用的是Required,使用它意味着对应的LoginModule对象必须被 调用,并且必须需要通过所有的验证。由于Flag本身的复杂性,本文在这里不作 深究。 ModuleOption允许有多个参数。例如你可以设定调试参数为True (debug=true),这样诊断输出将被送到System.out中。 配置文件可以被任意命名,并且可以被放在任何位置。JAAS框架通过使用 java.securty.auth.long.config属性来确定配置文件的位置。例如当你的应用 程序是JaasTest,配置文件是当前目录下的jaas.config,你需要在命令行中输 入: java -Djava.security.auth.login.config=jass.config JavaTest 图二描述了配置文件中各元素之间的关系 图二 JAAS的配置文件 通过命令行方式进行登录验证 为了说明JAAS到底能干什么,我在这里编写了两个例子。一个是简单的由命 令行输入调用的程序,另一个是服务器端的JSP程序。这两个程序都通过用户名 /密码的方式进行登录,然后使用关系数据库对其进行验证。 为了通过数据库进行验证,我们需要: 1. 实现RdbmsLoginModul类,该类可以对输入的信息进行验证。 2. 编辑一个配置文件,告诉LoginContext如何使用RdbmsLoginModule。 3. 实现ConsoleCallbackHandler类,通过该类可以获取用户的输入。 4. 编写应用程序代码。 在RdbmsLoginModul类中,我们必须实现LgoinModule接口中的五个方法。首 先是initialize()方法:
LoginContext在调用login()方法时会调用initialize()方法。 RdbmsLoginModule的第一个任务就是在类中保存输入参数的引用。在验证成功后 将向Subject对象中送入Principal对象和凭证。 CallbackHandler对象将会在login()方法中被使用到。sharedState可以使 数据在不同的LoginModule对象之间共享,但是在这个例子中我们不会使用它。 最后是名为options的Map对象。options向LgoinModule对象传递在配置文件 ModuleOption域中定义的参数的值。配置文件如下所示:
JAAS - 灵活的Java安全机制(5)时间:2010-12-20在配置文件中,RdbmsLoginModule包含了五个参数,其中drive |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |